Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.48.0-wmf.1 first-letter Media Specjalna Dyskusja Wikipedysta Dyskusja wikipedysty Wikibooks Dyskusja Wikibooks Plik Dyskusja pliku MediaWiki Dyskusja MediaWiki Szablon Dyskusja szablonu Pomoc Dyskusja pomocy Kategoria Dyskusja kategorii Wikijunior Dyskusja Wikijuniora TimedText TimedText talk Moduł Dyskusja modułu Wydarzenie Dyskusja wydarzenia Szablon:Wypowiedzenie/opis 10 22078 560382 544293 2026-11-01T09:23:42Z Persino 2851 /* Opis parametrów i przykłady użycia */ 560382 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|StronicowyParser}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} {{Szablony stronicowe}} <!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY --> == Użycie == Szablon umieszcza nagłówek i tekst {{Wypowiedzenie/opis/z wypowiedzeniem|{{ROOTPAGENAME}}}} w ramce. == Opis parametrów i przykłady użycia== ; Podstawowe {{Pre|{{s|{{ROOTPAGENAME}}|tekst{{=}}{{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|Tekst |.}}}}}} {{ElastycznyWiersz|{{ {{ROOTPAGENAME}}|tekst={{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|Tekst |.}}|rozmiar=100%}}}} ; Pełne {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|Wypowiedzenie|rodzaj{{=}}Twierdzenie{{!}}}}kogo{{=}}Kogoś|czego{{=}}czegoś|jakie{{=}}jakieś|rozmiar{{=}}50%|tekst{{=}}Tekst {{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}}}.}}}}{{#ifeq:{{ROOTPAGENAME}}|Wypowiedzenie| * {{Code|rodzaj}}- opisuje rodzaj wypowiedzenia.}} * {{Code|kogo}} - przez kogo {{Wypowiedzenie/opis/dane wypowiedzenie|{{ROOTPAGENAME}}}}. * {{Code|czego}} - czego dotyczy {{Wypowiedzenie/opis/to wypowiedzenie|{{ROOTPAGENAME}}}}. * {{Code|jakie}} - {{Wypowiedzenie/opis/jakie wypowiedzenie|{{ROOTPAGENAME}}}}. * {{Code|rozmiar}} - rozmiar ramki z tekstem {{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}}}. * {{Code|1}} lub {{Code|tekst}} - tekst {{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}}}. * {{Code|2}} lub {{Code|uchwyt}} - uchwyt numeracji ramki {{Wypowiedzenie/opis/z wypowiedzeniem|{{ROOTPAGENAME}}}} lub numeracja w przypadku niepustego {{Code|bez automatu}}. {{Hr}} {{#ifeq:{{ROOTPAGENAME}}|Wypowiedzenie |{{Pre|{{s|Wypowiedzenie|uchwyt{{=}}wypowiedzenie|kogo{{=}}Kogoś|czego{{=}}czegoś|jakie{{=}}jakieś|rozmiar{{=}}50%|tekst{{=}}Tekst wypowiedzenia}}}} {{ElastycznyWiersz|{{Wypowiedzenie|uchwyt=wypowiedzenie|kogo=Kogoś|czego=czegoś|jakie=jakieś|rozmiar=50%|tekst=Tekst wypowiedzenia}}}} {{P|Link do wypowiedzenia: {{s|LinkObiekt|wypowiedzenie}},czyli: {{LinkObiekt|wypowiedzenie}}.}} |{{Pre|{{s|{{ROOTPAGENAME}}|uchwyt{{=}}wypowiedzenie|kogo{{=}}Kogoś|czego{{=}}czegoś|jakie{{=}}jakieś|rozmiar{{=}}50%|tekst{{=}}Tekst {{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}}}.}}}} {{ElastycznyWiersz|{{ {{ROOTPAGENAME}}|uchwyt=wypowiedzenie|kogo=Kogoś|czego=czegoś|jakie=jakieś|rozmiar=50%|tekst={{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|Tekst |.}}.}}}} {{P|Link do wypowiedzenia: {{s|Link{{ROOTPAGENAME}}|wypowiedzenie}}, czyli: {{Link{{ROOTPAGENAME}}|wypowiedzenie}}.}}}} {{Wypowiedzenie/opis/linki|{{ROOTPAGENAME}}}} === Czcionki tego szablonu === Czcionek nagłówka i tekstu, w ramce, z parametrami są ustawione w szablonie za pomocą parametrów: ; Podstawowe skompensowane opcje dotyczące czcionek * {{Code|czcionka (nagłówka, tekstu)}} = (rozmiar, wysokość linii, rodzina, wariant, rozciągnięcie, waga i styl) czcionki (opcjonalny). ; Dalsze nieskompensowane opcje dotyczące czcionek * {{Code|rozmiar czcionki (nagłówka, tekstu)}} = rozmiar czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|wysokość linii czcionki (nagłówka, tekstu)}} = wysokość wiersza czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|rodzina czcionki (nagłówka, tekstu)}} = rodzina czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|wariant czcionki (nagłówka, tekstu)}} = wariant czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|rozciągnięcie czcionki (nagłówka, tekstu)}} = rozciągnięcie czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|waga czcionki (nagłówka, tekstu)}} = waga czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|styl czcionki (nagłówka, tekstu)}} = styl czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów). === Uwagi === * Szablon {{s|{{ROOTPAGENAME}}}} ma jeszcze jeden parametr: {{Parametr|bez automatu}} wartość niepusta, tzn. wyłączone, czyli np.: {{Code|tak}}, i włączone, gdy wartość pusta, tłumaczenie uchwytu na numer wzoru, (opcjonalny domyślnie ustawiony na wartość pusta). * Parametr {{Parametr|bez kategorii stronicowych}}, gdy wartość niepusta, to wtedy wyłącza generowanie dodatkowych kategorii, (opcjonalny, automatycznie ustawiony na wartość pustą). == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "rodzaj": { "description": "Opisuje rodzaj wypowiedzenia.", "type": "string", "suggested": true }, "kogo": { "description": "Przez kogo dane wypowiedzenie zostało upublikowane.", "type": "string" }, "czego": { "description": "Czego dotyczy to wypowiedzenie.", "type": "string" }, "jakie": { "description": "Jakie jest to wypowiedzenie.", "type": "string", "suggested": true }, "rozmiar": { "description": "Rozmiar ramki wypowiedzenia.", "type": "string" }, "tekst": { "aliases": [ "1" ], "description": "Tekst wypowiedzenia.", "type": "string", "required": true }, "uchwyt": { "aliases": [ "2" ], "description": "Uchwyt numeracji ramki z wypowiedzeniem.", "type": "string", "suggested": true }, "czcionka nagłówka": { "description": "(Rozmiar, wysokość linii, rodzina, wariant, rozciągnięcie, waga i styl) czcionki.", "type": "string" }, "czcionka tekstu": { "description": "(Rozmiar, wysokość linii, rodzina, wariant, rozciągnięcie, waga i styl) czcionki.", "type": "string" }, "rozmiar czcionki nagłówka": { "description": "Rozmiar czcionki nagłówka.", "type": "string" }, "rozmiar czcionki tekstu": { "description": "Rozmiar czcionki tekstu.", "type": "string" }, "wysokość linii czcionki tekstu": { "description": "Wysokość wiersza czcionki tekstu.", "type": "string" }, "wysokość linii czcionki nagłówka": { "description": "Wysokość wiersza czcionki nagłówka.", "type": "string" }, "rodzina czcionki nagłówka": { "description": "Rodzina czcionki nagłówka.", "type": "string" }, "rodzina czcionki tekstu": { "description": "Rodzina czcionki tekstu.", "type": "string" }, "wariant czcionki nagłówka": { "description": "Wariant czcionki nagłówka.", "type": "string" }, "wariant czcionki tekstu": { "description": "Wariant czcionki tekstu.", "type": "string" }, "rozciągnięcie czcionki nagłówka": { "description": "Rozciągnięcie czcionki nagłówka.", "type": "string" }, "rozciągnięcie czcionki tekstu": { "description": "Rozciągnięcie czcionki tekstu.", "type": "string" }, "waga czcionki nagłówka": { "description": "Waga czcionki nagłówka.", "type": "string" }, "waga czcionki tekstu": { "description": "Waga czcionki tekstu.", "type": "string" }, "styl czcionki nagłówka": { "description": "Styl czcionki nagłówka.", "type": "string" }, "styl czcionki tekstu": { "description": "Styl czcionki tekstu.", "type": "string" } }, "description": "Szablon wypowiedzenia {{Wypowiedzenie}} i jego pochodne, zbudowaną w oparciu o nią.", "paramOrder": [ "rodzaj", "kogo", "czego", "jakie", "rozmiar", "tekst", "uchwyt", "czcionka nagłówka", "czcionka tekstu", "rozmiar czcionki nagłówka", "rozmiar czcionki tekstu", "wysokość linii czcionki nagłówka", "wysokość linii czcionki tekstu", "rodzina czcionki nagłówka", "rodzina czcionki tekstu", "wariant czcionki nagłówka", "wariant czcionki tekstu", "rozciągnięcie czcionki nagłówka", "rozciągnięcie czcionki tekstu", "waga czcionki nagłówka", "waga czcionki tekstu", "styl czcionki nagłówka", "styl czcionki tekstu" ] } </templatedata> == Zobacz też == * {{s|LinkObiekt}} - ogólny szablon linków do różnego rodzaju wypowiedzeń i też {{s|Wypowiedzenie}}{{#switch:{{ROOTPAGENAME}}|Wypowiedzenie=.|#default=, * {{s|Link{{ROOTPAGENAME}}}} - szczególny szablon linków do wypowiedzeń, którego definiuje ten szablon.}} {{BrClear}} <includeonly> <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> {{Kategoria|Szablony stronicowe matematyczne wypowiedzeń zwykłe}} </includeonly> hbnzj5988afg6lbr4bf6wdec8d2y6te 560383 560382 2026-11-01T09:30:17Z Persino 2851 560383 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|StronicowyParser}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} {{Szablony stronicowe}} <!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY --> == Użycie == Szablon umieszcza nagłówek i tekst {{Wypowiedzenie/opis/z wypowiedzeniem|{{ROOTPAGENAME}}}} w ramce. == Opis parametrów i przykłady użycia== ; Podstawowe {{Pre|{{s|{{ROOTPAGENAME}}|tekst{{=}}{{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|{{#switch:{{ROOTPAGENAME}}|#default=Tekst&nbsp;|Tbl=}}|{{#switch:{{ROOTPAGENAME}}|#default=.|Tbl=}}}}}}}} {{ElastycznyWiersz|{{ {{ROOTPAGENAME}}|tekst={{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|{{#switch:{{ROOTPAGENAME}}|#default=Tekst&nbsp;|Tbl=}}|{{#switch:{{ROOTPAGENAME}}|#default=.|Tbl=}}}}|rozmiar=100%}}}} ; Pełne {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|Wypowiedzenie|rodzaj{{=}}Twierdzenie{{!}}}}kogo{{=}}Kogoś|czego{{=}}czegoś|jakie{{=}}jakieś|rozmiar{{=}}50%|tekst{{=}}Tekst {{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}}}.}}}}{{#ifeq:{{ROOTPAGENAME}}|Wypowiedzenie| * {{Code|rodzaj}}- opisuje rodzaj wypowiedzenia.}} * {{Code|kogo}} - przez kogo {{Wypowiedzenie/opis/dane wypowiedzenie|{{ROOTPAGENAME}}}}. * {{Code|czego}} - czego dotyczy {{Wypowiedzenie/opis/to wypowiedzenie|{{ROOTPAGENAME}}}}. * {{Code|jakie}} - {{Wypowiedzenie/opis/jakie wypowiedzenie|{{ROOTPAGENAME}}}}. * {{Code|rozmiar}} - rozmiar ramki z tekstem {{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}}}. * {{Code|1}} lub {{Code|tekst}} - tekst {{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}}}. * {{Code|2}} lub {{Code|uchwyt}} - uchwyt numeracji ramki {{Wypowiedzenie/opis/z wypowiedzeniem|{{ROOTPAGENAME}}}} lub numeracja w przypadku niepustego {{Code|bez automatu}}. {{Hr}} {{#ifeq:{{ROOTPAGENAME}}|Wypowiedzenie |{{Pre|{{s|Wypowiedzenie|uchwyt{{=}}wypowiedzenie|kogo{{=}}Kogoś|czego{{=}}czegoś|jakie{{=}}jakieś|rozmiar{{=}}50%|tekst{{=}}Tekst wypowiedzenia}}}} {{ElastycznyWiersz|{{Wypowiedzenie|uchwyt=wypowiedzenie|kogo=Kogoś|czego=czegoś|jakie=jakieś|rozmiar=50%|tekst=Tekst wypowiedzenia}}}} {{P|Link do wypowiedzenia: {{s|LinkObiekt|wypowiedzenie}},czyli: {{LinkObiekt|wypowiedzenie}}.}} |{{Pre|{{s|{{ROOTPAGENAME}}|uchwyt{{=}}wypowiedzenie|kogo{{=}}Kogoś|czego{{=}}czegoś|jakie{{=}}jakieś|rozmiar{{=}}50%|tekst{{=}}{{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|{{#switch:{{ROOTPAGENAME}}|#default=Tekst&nbsp;|Tbl=}}|{{#switch:{{ROOTPAGENAME}}|#default=.|Tbl=}}}}}}}} {{ElastycznyWiersz|{{ {{ROOTPAGENAME}}|uchwyt=wypowiedzenie|kogo=Kogoś|czego=czegoś|jakie=jakieś|rozmiar=50%|tekst={{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|{{#switch:{{ROOTPAGENAME}}|#default=Tekst&nbsp;|Tbl=}}|{{#switch:{{ROOTPAGENAME}}|#default=.|Tbl=}}}}}}}} {{P|Link do wypowiedzenia: {{s|Link{{ROOTPAGENAME}}|wypowiedzenie}}, czyli: {{Link{{ROOTPAGENAME}}|wypowiedzenie}}.}}}} {{Wypowiedzenie/opis/linki|{{ROOTPAGENAME}}}} === Czcionki tego szablonu === Czcionek nagłówka i tekstu, w ramce, z parametrami są ustawione w szablonie za pomocą parametrów: ; Podstawowe skompensowane opcje dotyczące czcionek * {{Code|czcionka (nagłówka, tekstu)}} = (rozmiar, wysokość linii, rodzina, wariant, rozciągnięcie, waga i styl) czcionki (opcjonalny). ; Dalsze nieskompensowane opcje dotyczące czcionek * {{Code|rozmiar czcionki (nagłówka, tekstu)}} = rozmiar czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|wysokość linii czcionki (nagłówka, tekstu)}} = wysokość wiersza czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|rodzina czcionki (nagłówka, tekstu)}} = rodzina czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|wariant czcionki (nagłówka, tekstu)}} = wariant czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|rozciągnięcie czcionki (nagłówka, tekstu)}} = rozciągnięcie czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|waga czcionki (nagłówka, tekstu)}} = waga czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|styl czcionki (nagłówka, tekstu)}} = styl czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów). === Uwagi === * Szablon {{s|{{ROOTPAGENAME}}}} ma jeszcze jeden parametr: {{Parametr|bez automatu}} wartość niepusta, tzn. wyłączone, czyli np.: {{Code|tak}}, i włączone, gdy wartość pusta, tłumaczenie uchwytu na numer wzoru, (opcjonalny domyślnie ustawiony na wartość pusta). * Parametr {{Parametr|bez kategorii stronicowych}}, gdy wartość niepusta, to wtedy wyłącza generowanie dodatkowych kategorii, (opcjonalny, automatycznie ustawiony na wartość pustą). == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "rodzaj": { "description": "Opisuje rodzaj wypowiedzenia.", "type": "string", "suggested": true }, "kogo": { "description": "Przez kogo dane wypowiedzenie zostało upublikowane.", "type": "string" }, "czego": { "description": "Czego dotyczy to wypowiedzenie.", "type": "string" }, "jakie": { "description": "Jakie jest to wypowiedzenie.", "type": "string", "suggested": true }, "rozmiar": { "description": "Rozmiar ramki wypowiedzenia.", "type": "string" }, "tekst": { "aliases": [ "1" ], "description": "Tekst wypowiedzenia.", "type": "string", "required": true }, "uchwyt": { "aliases": [ "2" ], "description": "Uchwyt numeracji ramki z wypowiedzeniem.", "type": "string", "suggested": true }, "czcionka nagłówka": { "description": "(Rozmiar, wysokość linii, rodzina, wariant, rozciągnięcie, waga i styl) czcionki.", "type": "string" }, "czcionka tekstu": { "description": "(Rozmiar, wysokość linii, rodzina, wariant, rozciągnięcie, waga i styl) czcionki.", "type": "string" }, "rozmiar czcionki nagłówka": { "description": "Rozmiar czcionki nagłówka.", "type": "string" }, "rozmiar czcionki tekstu": { "description": "Rozmiar czcionki tekstu.", "type": "string" }, "wysokość linii czcionki tekstu": { "description": "Wysokość wiersza czcionki tekstu.", "type": "string" }, "wysokość linii czcionki nagłówka": { "description": "Wysokość wiersza czcionki nagłówka.", "type": "string" }, "rodzina czcionki nagłówka": { "description": "Rodzina czcionki nagłówka.", "type": "string" }, "rodzina czcionki tekstu": { "description": "Rodzina czcionki tekstu.", "type": "string" }, "wariant czcionki nagłówka": { "description": "Wariant czcionki nagłówka.", "type": "string" }, "wariant czcionki tekstu": { "description": "Wariant czcionki tekstu.", "type": "string" }, "rozciągnięcie czcionki nagłówka": { "description": "Rozciągnięcie czcionki nagłówka.", "type": "string" }, "rozciągnięcie czcionki tekstu": { "description": "Rozciągnięcie czcionki tekstu.", "type": "string" }, "waga czcionki nagłówka": { "description": "Waga czcionki nagłówka.", "type": "string" }, "waga czcionki tekstu": { "description": "Waga czcionki tekstu.", "type": "string" }, "styl czcionki nagłówka": { "description": "Styl czcionki nagłówka.", "type": "string" }, "styl czcionki tekstu": { "description": "Styl czcionki tekstu.", "type": "string" } }, "description": "Szablon wypowiedzenia {{Wypowiedzenie}} i jego pochodne, zbudowaną w oparciu o nią.", "paramOrder": [ "rodzaj", "kogo", "czego", "jakie", "rozmiar", "tekst", "uchwyt", "czcionka nagłówka", "czcionka tekstu", "rozmiar czcionki nagłówka", "rozmiar czcionki tekstu", "wysokość linii czcionki nagłówka", "wysokość linii czcionki tekstu", "rodzina czcionki nagłówka", "rodzina czcionki tekstu", "wariant czcionki nagłówka", "wariant czcionki tekstu", "rozciągnięcie czcionki nagłówka", "rozciągnięcie czcionki tekstu", "waga czcionki nagłówka", "waga czcionki tekstu", "styl czcionki nagłówka", "styl czcionki tekstu" ] } </templatedata> == Zobacz też == * {{s|LinkObiekt}} - ogólny szablon linków do różnego rodzaju wypowiedzeń i też {{s|Wypowiedzenie}}{{#switch:{{ROOTPAGENAME}}|Wypowiedzenie=.|#default=, * {{s|Link{{ROOTPAGENAME}}}} - szczególny szablon linków do wypowiedzeń, którego definiuje ten szablon.}} {{BrClear}} <includeonly> <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> {{Kategoria|Szablony stronicowe matematyczne wypowiedzeń zwykłe}} </includeonly> 7zhm358ukqylsl2c6l0us5qmfjlwkf8 560384 560383 2026-11-01T09:36:02Z Persino 2851 560384 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|StronicowyParser}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} {{Szablony stronicowe}} <!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY --> == Użycie == Szablon umieszcza nagłówek i tekst {{Wypowiedzenie/opis/z wypowiedzeniem|{{ROOTPAGENAME}}}} w ramce. == Opis parametrów i przykłady użycia== ; Podstawowe {{Pre|{{s|{{ROOTPAGENAME}}|tekst{{=}}{{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|{{#switch:{{ROOTPAGENAME}}|#default=Tekst&nbsp;|Tbl=}}|{{#switch:{{ROOTPAGENAME}}|#default=.|Tbl=}}|wikikod}}}}}} {{ElastycznyWiersz|{{ {{ROOTPAGENAME}}|tekst={{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|{{#switch:{{ROOTPAGENAME}}|#default=Tekst&nbsp;|Tbl=}}|{{#switch:{{ROOTPAGENAME}}|#default=.|Tbl=}}|kod}}|rozmiar=100%}}}} ; Pełne {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|Wypowiedzenie|rodzaj{{=}}Twierdzenie{{!}}}}kogo{{=}}Kogoś|czego{{=}}czegoś|jakie{{=}}jakieś|rozmiar{{=}}50%|tekst{{=}}Tekst {{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}}}.}}}}{{#ifeq:{{ROOTPAGENAME}}|Wypowiedzenie| * {{Code|rodzaj}}- opisuje rodzaj wypowiedzenia.}} * {{Code|kogo}} - przez kogo {{Wypowiedzenie/opis/dane wypowiedzenie|{{ROOTPAGENAME}}|||tekst}}. * {{Code|czego}} - czego dotyczy {{Wypowiedzenie/opis/to wypowiedzenie|{{ROOTPAGENAME}}|||tekst}}. * {{Code|jakie}} - {{Wypowiedzenie/opis/jakie wypowiedzenie|{{ROOTPAGENAME}}|||tekst}}. * {{Code|rozmiar}} - rozmiar ramki z tekstem {{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|||tekst}}. * {{Code|1}} lub {{Code|tekst}} - tekst {{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|||tekst}}. * {{Code|2}} lub {{Code|uchwyt}} - uchwyt numeracji ramki {{Wypowiedzenie/opis/z wypowiedzeniem|{{ROOTPAGENAME}}}} lub numeracja w przypadku niepustego {{Code|bez automatu}}. {{Hr}} {{#ifeq:{{ROOTPAGENAME}}|Wypowiedzenie |{{Pre|{{s|Wypowiedzenie|uchwyt{{=}}wypowiedzenie|kogo{{=}}Kogoś|czego{{=}}czegoś|jakie{{=}}jakieś|rozmiar{{=}}50%|tekst{{=}}Tekst wypowiedzenia}}}} {{ElastycznyWiersz|{{Wypowiedzenie|uchwyt=wypowiedzenie|kogo=Kogoś|czego=czegoś|jakie=jakieś|rozmiar=50%|tekst=Tekst wypowiedzenia}}}} {{P|Link do wypowiedzenia: {{s|LinkObiekt|wypowiedzenie}},czyli: {{LinkObiekt|wypowiedzenie}}.}} |{{Pre|{{s|{{ROOTPAGENAME}}|uchwyt{{=}}wypowiedzenie|kogo{{=}}Kogoś|czego{{=}}czegoś|jakie{{=}}jakieś|rozmiar{{=}}50%|tekst{{=}}{{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|{{#switch:{{ROOTPAGENAME}}|#default=Tekst&nbsp;|Tbl=}}|{{#switch:{{ROOTPAGENAME}}|#default=.|Tbl=}}|wikikod}}}}}} {{ElastycznyWiersz|{{ {{ROOTPAGENAME}}|uchwyt=wypowiedzenie|kogo=Kogoś|czego=czegoś|jakie=jakieś|rozmiar=50%|tekst={{Wypowiedzenie/opis/wypowiedzenia|{{ROOTPAGENAME}}|{{#switch:{{ROOTPAGENAME}}|#default=Tekst&nbsp;|Tbl=}}|{{#switch:{{ROOTPAGENAME}}|#default=.|Tbl=}}|kod}}}}}} {{P|Link do wypowiedzenia: {{s|Link{{ROOTPAGENAME}}|wypowiedzenie}}, czyli: {{Link{{ROOTPAGENAME}}|wypowiedzenie}}.}}}} {{Wypowiedzenie/opis/linki|{{ROOTPAGENAME}}}} === Czcionki tego szablonu === Czcionek nagłówka i tekstu, w ramce, z parametrami są ustawione w szablonie za pomocą parametrów: ; Podstawowe skompensowane opcje dotyczące czcionek * {{Code|czcionka (nagłówka, tekstu)}} = (rozmiar, wysokość linii, rodzina, wariant, rozciągnięcie, waga i styl) czcionki (opcjonalny). ; Dalsze nieskompensowane opcje dotyczące czcionek * {{Code|rozmiar czcionki (nagłówka, tekstu)}} = rozmiar czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|wysokość linii czcionki (nagłówka, tekstu)}} = wysokość wiersza czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|rodzina czcionki (nagłówka, tekstu)}} = rodzina czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|wariant czcionki (nagłówka, tekstu)}} = wariant czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|rozciągnięcie czcionki (nagłówka, tekstu)}} = rozciągnięcie czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|waga czcionki (nagłówka, tekstu)}} = waga czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|styl czcionki (nagłówka, tekstu)}} = styl czcionki (nagłówka, tekstu) w ramce (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów). === Uwagi === * Szablon {{s|{{ROOTPAGENAME}}}} ma jeszcze jeden parametr: {{Parametr|bez automatu}} wartość niepusta, tzn. wyłączone, czyli np.: {{Code|tak}}, i włączone, gdy wartość pusta, tłumaczenie uchwytu na numer wzoru, (opcjonalny domyślnie ustawiony na wartość pusta). * Parametr {{Parametr|bez kategorii stronicowych}}, gdy wartość niepusta, to wtedy wyłącza generowanie dodatkowych kategorii, (opcjonalny, automatycznie ustawiony na wartość pustą). == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "rodzaj": { "description": "Opisuje rodzaj wypowiedzenia.", "type": "string", "suggested": true }, "kogo": { "description": "Przez kogo dane wypowiedzenie zostało upublikowane.", "type": "string" }, "czego": { "description": "Czego dotyczy to wypowiedzenie.", "type": "string" }, "jakie": { "description": "Jakie jest to wypowiedzenie.", "type": "string", "suggested": true }, "rozmiar": { "description": "Rozmiar ramki wypowiedzenia.", "type": "string" }, "tekst": { "aliases": [ "1" ], "description": "Tekst wypowiedzenia.", "type": "string", "required": true }, "uchwyt": { "aliases": [ "2" ], "description": "Uchwyt numeracji ramki z wypowiedzeniem.", "type": "string", "suggested": true }, "czcionka nagłówka": { "description": "(Rozmiar, wysokość linii, rodzina, wariant, rozciągnięcie, waga i styl) czcionki.", "type": "string" }, "czcionka tekstu": { "description": "(Rozmiar, wysokość linii, rodzina, wariant, rozciągnięcie, waga i styl) czcionki.", "type": "string" }, "rozmiar czcionki nagłówka": { "description": "Rozmiar czcionki nagłówka.", "type": "string" }, "rozmiar czcionki tekstu": { "description": "Rozmiar czcionki tekstu.", "type": "string" }, "wysokość linii czcionki tekstu": { "description": "Wysokość wiersza czcionki tekstu.", "type": "string" }, "wysokość linii czcionki nagłówka": { "description": "Wysokość wiersza czcionki nagłówka.", "type": "string" }, "rodzina czcionki nagłówka": { "description": "Rodzina czcionki nagłówka.", "type": "string" }, "rodzina czcionki tekstu": { "description": "Rodzina czcionki tekstu.", "type": "string" }, "wariant czcionki nagłówka": { "description": "Wariant czcionki nagłówka.", "type": "string" }, "wariant czcionki tekstu": { "description": "Wariant czcionki tekstu.", "type": "string" }, "rozciągnięcie czcionki nagłówka": { "description": "Rozciągnięcie czcionki nagłówka.", "type": "string" }, "rozciągnięcie czcionki tekstu": { "description": "Rozciągnięcie czcionki tekstu.", "type": "string" }, "waga czcionki nagłówka": { "description": "Waga czcionki nagłówka.", "type": "string" }, "waga czcionki tekstu": { "description": "Waga czcionki tekstu.", "type": "string" }, "styl czcionki nagłówka": { "description": "Styl czcionki nagłówka.", "type": "string" }, "styl czcionki tekstu": { "description": "Styl czcionki tekstu.", "type": "string" } }, "description": "Szablon wypowiedzenia {{Wypowiedzenie}} i jego pochodne, zbudowaną w oparciu o nią.", "paramOrder": [ "rodzaj", "kogo", "czego", "jakie", "rozmiar", "tekst", "uchwyt", "czcionka nagłówka", "czcionka tekstu", "rozmiar czcionki nagłówka", "rozmiar czcionki tekstu", "wysokość linii czcionki nagłówka", "wysokość linii czcionki tekstu", "rodzina czcionki nagłówka", "rodzina czcionki tekstu", "wariant czcionki nagłówka", "wariant czcionki tekstu", "rozciągnięcie czcionki nagłówka", "rozciągnięcie czcionki tekstu", "waga czcionki nagłówka", "waga czcionki tekstu", "styl czcionki nagłówka", "styl czcionki tekstu" ] } </templatedata> == Zobacz też == * {{s|LinkObiekt}} - ogólny szablon linków do różnego rodzaju wypowiedzeń i też {{s|Wypowiedzenie}}{{#switch:{{ROOTPAGENAME}}|Wypowiedzenie=.|#default=, * {{s|Link{{ROOTPAGENAME}}}} - szczególny szablon linków do wypowiedzeń, którego definiuje ten szablon.}} {{BrClear}} <includeonly> <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> {{Kategoria|Szablony stronicowe matematyczne wypowiedzeń zwykłe}} </includeonly> s1hui7wcrcy4j7oc73q9dsoco0eei4z Szablon:StronaStart/styles.css 10 33595 560394 559141 2026-11-01T10:28:31Z Persino 2851 560394 sanitized-css text/css .fonty_rodzina_sans{ font-family: Arial, Helvetica, "Free Helvetian", FreeSans, sans-serif; font-stretch:normal; font-variant:normal; font-style:normal; font-weight:normal; font-size-adjust:none; letter-spacing:normal; word-spacing:normal; text-align:justify; text-justify:inter-word; word-wrap:break-word; word-break:break-word; hyphens:auto; } .fonty_rodzina_sans ul li, .fonty_rodzina_sans ol li{ text-align:left; } .fonty_główna_kolumna, .fonty_tekst_we_wzorach, .fonty_obiekt, .fonty_rysunek, .fonty_patrz,.fonty_zobaczteż, .fonty_twierdzenie, .fonty_hipoteza, .fonty_lemat, .fonty_kryterium, .fonty_dowód, .fonty_postulat, .fonty_postulaty, .fonty_określenie, .fonty_zadanie, .fonty_praktyka, .fonty_procedura, .fonty_schemat, .fonty_tbl{ font-size:calc( 0.875rem * 1.042 ); line-height:1.4em; } .format .fonty_główna_kolumna{ font-size:calc( 0.875em * 1.042 ); line-height:1.4em; } .format .fonty_tekst_we_wzorach, .format .fonty_obiekt, .format .fonty_rysunek, .format .fonty_patrz,.fonty_zobaczteż, .format .fonty_twierdzenie, .format .fonty_hipoteza, .format .fonty_lemat, .format .fonty_kryterium, .format .fonty_dowód, .format .fonty_postulat, .format .fonty_postulaty, .format .fonty_określenie, .format .fonty_zadanie, .format .fonty_praktyka, .format .fonty_procedura, .format .fonty_schemat{ font-size:1em; line-height:1.3em; } .fonty_poboczna_kolumna{ font-size:calc( 0.75rem * 1.040 ); line-height:1.2em; } .format .fonty_poboczna_kolumna{ font-size:calc( 0.75em * 1.040 ); line-height:1.2em; } .fonty_toc{ font-size:calc( 0.8125rem * 1.092 ); line-height: 1.0em; } .format .fonty_toc{ font-size:calc( 0.8125em * 1.092 ); line-height: 1.0em; } :not(span):not(.fonty_formuły) > span.mwe-math-element, :not(span):not(.fonty_wzory) > span.mwe-math-element, .fonty_rodzina_serif{ font-family: "Times New Roman", Times, "Free Times", FreeSerif, serif; font-stretch:normal; font-variant:normal; font-style:normal; font-weight:normal; font-size-adjust:0.45; letter-spacing:normal; word-spacing:normal; word-wrap:break-word; word-break:break-word; } :not(span):not(.fonty_formuły) > span.mwe-math-element, :not(span):not(.fonty_wzory) > span.mwe-math-element, .fonty_formuły, .fonty_wzory{ font-size:calc( 0.875rem * 0.86 ); line-height:inherit; } .format .fonty_formuły, .format .fonty_wzory{ font-size:calc( 0.875em * 0.86 / 0.875 / 1.042 ); line-height:inherit; } .format .fonty_formuły > span.fonty_tekst_we_wzorach, .format .fonty_wzory > span.fonty_tekst_we_wzorach{ font-size:calc( 1em / 0.875 / 0.86 * 0.875 * 1.042 ); line-height:inherit; } .fonty_opis_i_numeracja, .fonty_linkobiekt, .fonty_linkwzór, .fonty_linkrysunek, .fonty_linkpatrz,.fonty_linkzobaczteż, .fonty_linktwierdzenie, .fonty_linkhipoteza, .fonty_linklemat, .fonty_linkkryterium, .fonty_linkdowód, .fonty_linkpostulat, .fonty_linkpostulaty, .fonty_linkokreślenie, .fonty_linkzadanie, .fonty_linkpraktyka, .fonty_linkprocedura, .fonty_linkschemat,.fonty_linknagłówek{ font-size:calc(0.8125rem * 1.034); line-height:inherit; } .format .fonty_opis_i_numeracja, .format .fonty_linkobiekt, .format .fonty_linkwzór, .format .fonty_linkrysunek, .format .fonty_linkpatrz,.format .fonty_linkzobaczteż, .format .fonty_linktwierdzenie, .format .fonty_linkhipoteza, .format .fonty_linklemat, .format .fonty_linkkryterium, .format .fonty_linkdowód, .format .fonty_linkpostulat, .format .fonty_linkpostulaty, .format .fonty_linkokreślenie, .format .fonty_linkzadanie, .format .fonty_linkpraktyka, .format .fonty_linkprocedura, .format .fonty_linkschemat,.format .fonty_linknagłówek{ font-size:calc( 1em * 0.8125 * 1.034 / 0.875 / 1.042 ); line-height:inherit; } /*{{Kategoria|Szablony - arkusze stylów/StronaStart|sortuj spacją=tak}}*/ 2njph8surck7ka56lvvg6h1cfm9ut29 Szablon:Szablony stronicowe 10 33925 560391 543739 2026-11-01T10:03:36Z Persino 2851 560391 wikitext text/x-wiki {{Szablon nawigacyjny | nazwa = Szablony stronicowe | tytuł = Szablony stronicowe | zwijanie = rozwinięte | szerokość = 78ex | margines = 5px 0 5px 5px | opis1 = Wzory | spis1 = * {{s|Wzór}} * {{s|Wzór2}} * {{s|CentrujWzór}} * {{s|CentrujWzór2}} | opis2 = MathML | spis2 = * {{s|MathMLWzór}} * {{s|MathMLWzór2}} * {{s|CentrujMathMLWzór}} * {{s|CentrujMathMLWzór2}} | opis3 = Grafika | spis3 = * {{s|Rysunek}} | opis4 = Punkty | spis4 = * {{s|ZobaczTeż}} * {{s|Patrz}} | opis5 = Ważne | spis5 = * {{s|LinkWzór}} * {{s|LinkRysunek}} * {{s|LinkZobaczTeż}} * {{s|LinkPatrz}} | opis6 = Ogólne | spis6 = {{Szablon nawigacyjny z kolumnami|podgrupa | opis1 = Szablon linków | spis1 = {{Szablon nawigacyjny podgrupa | opis1 = Linki | spis1 = * {{s|LinkObiekt}} }} | opis2 = Szablon wypowiedzenia | spis2 = {{Szablon nawigacyjny podgrupa | opis1 = Wypowiedzenie | spis1 = * {{s|Wypowiedzenie}} }} | kategoria = nie }} | opis7 = Szczególne | spis7 = {{Szablon nawigacyjny z kolumnami|podgrupa | dół = Szablony okienek i do ich uchwytów specjalistyczne linki | opis1 = Linki | spis1 = {{Szablon nawigacyjny podgrupa | opis1 = Twierdzenie | spis1 = * {{s|LinkTwierdzenie}} | opis2 = Hipotezy | spis2 = * {{s|LinkHipoteza}} | opis3 = Lemat | spis3 = * {{s|LinkLemat}} | opis4 = Kryterium | spis4 = * {{s|LinkKryterium}} | opis5 = Dowód | spis5 = * {{s|LinkDowód}} | opis6 = Postulat | spis6 = * {{s|LinkPostulat}} | opis7 = Postulaty | spis7 = * {{s|LinkPostulaty}} | opis8 = Definicje | spis8 = * {{s|LinkOkreślenie}} | opis9 = Zadanie | spis9 = * {{s|LinkZadanie}} | opis10= Ćwiczenia | spis10 = * {{s|LinkPraktyka}} | opis11 = Procedura | spis11 = * {{s|LinkProcedura}} | opis12 = Schemat | spis12 = * {{s|LinkSchemat}} | opis13 = Definicja tabeli | spis13 = * {{s|LinkTbl}} }} | opis2 = Wypowiedzenia | spis2 = {{Szablon nawigacyjny podgrupa | opis1 = Twierdzenie | spis1 = * {{s|Twierdzenie}} | opis2 = Hipoteza | spis2 = * {{s|Hipoteza}} | opis3 = Lemat | spis3 = * {{s|Lemat}} | opis4 = Kryterium | spis4 = * {{s|Kryterium}} | opis5 = Dowód | spis5 = * {{s|Dowód}} | opis6 = Postulat | spis6 = * {{s|Postulat}} | opis7 = Postulaty | spis7 = * {{s|Postulaty}} | opis8 = Definicja | spis8 = * {{s|Określenie}} | opis9 = Zadanie | spis9 = * {{s|Zadanie}} | opis10 = Ćwiczenie | spis10 = * {{s|Praktyka}} | opis11 = Procedura | spis11 = * {{s|Procedura}} | opis12 = Schemat | spis12 = * {{s|Schemat}} | opis13 = Definicja tabeli * {{s|Tbl}} }} | kategoria = nie }} | opis8 = L-Nagłówki | spis8 = * {{s|Śródtytuł}} * {{s|LinkŚródtytuł}} * {{s|LinkŚródtytułTutaj}} | opis9 = L-Tekst | spis9 = * {{s|Śródtekst}} * {{s|PobierzŚródtekst}} | opis10 = Wykazy | spis10 = * {{s|ListaNagłówkówKsiążki}} | opis11 = W tekście | spis11 = * {{s|Formuła}} * {{s|MathMLFormuła}} | opis12 = Pomiędzy | spis12 = * {{s|Tekst}} | opis13 = Nagłówki | spis13 = * {{s|HNumer}} * {{s|StronaTytułowa}} | opis14 = Autonawigacja | spis14 = * {{s|Autonawigacja}} * {{s|NawigacjaSpecjalna}} * {{s|Układ autonawigacji}} | opis15 = Spis treści | spis15 = * {{s|SpisTreści}} (spis rozdziałów artykułu) * {{s|TOC}} * {{s|TOCRamka}} * {{s|TOC limit}} * {{s|Spis treści}} * {{s|Spis treści zwinięty}} | opis16 = Nawigacja | spis16 = * {{s|AktualnaKsiążka}} * {{s|NastępnyArtykuł}} * {{s|PoprzedniArtykuł}} * {{s|NazwaAktualnyArtykuł}} | opis17 = L-Nawigacja | spis17 = * {{s|LinkAktualnaKsiążka}} * {{s|LinkNastępnyArtykuł}} * {{s|LinkPoprzedniArtykuł}} * {{s|LinkNastępnySubArtykuł}} * {{s|LinkPoprzedniSubArtykuł}} | opis18 = Artykuły | spis18 = * {{s|PierwszyArtykuł}} * {{s|OstatniArtykuł}} * {{s|PomiędzyArtykuł}} * {{s|LosowyArtykuł}} | opis19 = Numerowanie | spis19 = * {{s|PobierzNazwęNagłówka}} * {{s|PobierzNumerNagłówka}} * {{s|PobierzNazwęArtykułu}} * {{s|PobierzNumerArtykułu}} | opis20 = Linie | spis20 = * {{s|LiniaArtykułuKsiążki}} | opis21 = Nazwy | spis21 = * {{s|NazwaLinkuArtykułu}} * {{s|LiczbaArtykułówKsiążki}} * {{s|PoziomNazwyArtykułu}} * {{s|SubNazwaNadArtykułu}} * {{s|NazwaNadArtykułu}} * {{s|LinkNazwaNadArtykułu}} * {{s|LinkSubNazwaNadArtykułu}} | opis22 = N-Nagłówki | spis22 = * {{s|LosowyNagłówek}} * {{s|PomiędzyNagłówek}} * {{s|PierwszyNagłówek}} * {{s|OstatniNagłówek}} * {{s|LiczbaNagłówkówSpisu}} | opis23 = Autorskie | spis23 = * {{s|Licencja}} | opis24 = Zawartości | spis24 = * {{s|StronaSubst}} * {{s|KsiążkaSubst}} * {{s|ArtykułSubst}} | opis25 = Linki | spis25 = * {{s|Sekcja referencyjna}} (spis artykułów) * {{s|StopkaSpisTreści}} | opis26 = Książkowe | spis26 = * {{s|Wolumin}} * {{s|SortWolumin}} * {{s|SortKuchWolumin}} * {{s|LinkWolumin}} * {{s|StronaWolumin}} * {{s|T}} * {{s|T2}} * {{s|Q}} * {{s|N}} * {{s|A}} * {{s|Status}} * {{s|Kompletność}} * {{s|Kompletność junior}} * {{s|Książka}} | opis27 = Indeksowanie | spis27 = * {{s|Kotwica}} * {{s|Indeksuj}} | opis28 = Spis artykułów | spis28 = * {{s|Link wewnętrzny}} * {{s|LinkOgólne}} * {{s|LinkGłówna}} * {{s|LinkWikijunior}} * {{s|LinkWikijunior2}} * {{s|LinkUżytkownik}} * {{s|LinkUżytkownik2}} * {{s|LinkProjekt}} * {{s|LinkProjekt2}} | kategoria = Wikibooks }} pw34g6bpgih4fqdq82xufpwawatai4x 560392 560391 2026-11-01T10:04:30Z Persino 2851 560392 wikitext text/x-wiki {{Szablon nawigacyjny | nazwa = Szablony stronicowe | tytuł = Szablony stronicowe | zwijanie = rozwinięte | szerokość = 78ex | margines = 5px 0 5px 5px | opis1 = Wzory | spis1 = * {{s|Wzór}} * {{s|Wzór2}} * {{s|CentrujWzór}} * {{s|CentrujWzór2}} | opis2 = MathML | spis2 = * {{s|MathMLWzór}} * {{s|MathMLWzór2}} * {{s|CentrujMathMLWzór}} * {{s|CentrujMathMLWzór2}} | opis3 = Grafika | spis3 = * {{s|Rysunek}} | opis4 = Punkty | spis4 = * {{s|ZobaczTeż}} * {{s|Patrz}} | opis5 = Ważne | spis5 = * {{s|LinkWzór}} * {{s|LinkRysunek}} * {{s|LinkZobaczTeż}} * {{s|LinkPatrz}} | opis6 = Ogólne | spis6 = {{Szablon nawigacyjny z kolumnami|podgrupa | opis1 = Szablon linków | spis1 = {{Szablon nawigacyjny podgrupa | opis1 = Linki | spis1 = * {{s|LinkObiekt}} }} | opis2 = Szablon wypowiedzenia | spis2 = {{Szablon nawigacyjny podgrupa | opis1 = Wypowiedzenie | spis1 = * {{s|Wypowiedzenie}} }} | kategoria = nie }} | opis7 = Szczególne | spis7 = {{Szablon nawigacyjny z kolumnami|podgrupa | dół = Szablony okienek i do ich uchwytów specjalistyczne linki | opis1 = Linki | spis1 = {{Szablon nawigacyjny podgrupa | opis1 = Twierdzenie | spis1 = * {{s|LinkTwierdzenie}} | opis2 = Hipotezy | spis2 = * {{s|LinkHipoteza}} | opis3 = Lemat | spis3 = * {{s|LinkLemat}} | opis4 = Kryterium | spis4 = * {{s|LinkKryterium}} | opis5 = Dowód | spis5 = * {{s|LinkDowód}} | opis6 = Postulat | spis6 = * {{s|LinkPostulat}} | opis7 = Postulaty | spis7 = * {{s|LinkPostulaty}} | opis8 = Definicje | spis8 = * {{s|LinkOkreślenie}} | opis9 = Zadanie | spis9 = * {{s|LinkZadanie}} | opis10= Ćwiczenia | spis10 = * {{s|LinkPraktyka}} | opis11 = Procedura | spis11 = * {{s|LinkProcedura}} | opis12 = Schemat | spis12 = * {{s|LinkSchemat}} | opis13 = Definicja tabeli | spis13 = * {{s|LinkTbl}} }} | opis2 = Wypowiedzenia | spis2 = {{Szablon nawigacyjny podgrupa | opis1 = Twierdzenie | spis1 = * {{s|Twierdzenie}} | opis2 = Hipoteza | spis2 = * {{s|Hipoteza}} | opis3 = Lemat | spis3 = * {{s|Lemat}} | opis4 = Kryterium | spis4 = * {{s|Kryterium}} | opis5 = Dowód | spis5 = * {{s|Dowód}} | opis6 = Postulat | spis6 = * {{s|Postulat}} | opis7 = Postulaty | spis7 = * {{s|Postulaty}} | opis8 = Definicja | spis8 = * {{s|Określenie}} | opis9 = Zadanie | spis9 = * {{s|Zadanie}} | opis10 = Ćwiczenie | spis10 = * {{s|Praktyka}} | opis11 = Procedura | spis11 = * {{s|Procedura}} | opis12 = Schemat | spis12 = * {{s|Schemat}} | opis13 = Definicja tabeli | spis13 = * {{s|Tbl}} }} | kategoria = nie }} | opis8 = L-Nagłówki | spis8 = * {{s|Śródtytuł}} * {{s|LinkŚródtytuł}} * {{s|LinkŚródtytułTutaj}} | opis9 = L-Tekst | spis9 = * {{s|Śródtekst}} * {{s|PobierzŚródtekst}} | opis10 = Wykazy | spis10 = * {{s|ListaNagłówkówKsiążki}} | opis11 = W tekście | spis11 = * {{s|Formuła}} * {{s|MathMLFormuła}} | opis12 = Pomiędzy | spis12 = * {{s|Tekst}} | opis13 = Nagłówki | spis13 = * {{s|HNumer}} * {{s|StronaTytułowa}} | opis14 = Autonawigacja | spis14 = * {{s|Autonawigacja}} * {{s|NawigacjaSpecjalna}} * {{s|Układ autonawigacji}} | opis15 = Spis treści | spis15 = * {{s|SpisTreści}} (spis rozdziałów artykułu) * {{s|TOC}} * {{s|TOCRamka}} * {{s|TOC limit}} * {{s|Spis treści}} * {{s|Spis treści zwinięty}} | opis16 = Nawigacja | spis16 = * {{s|AktualnaKsiążka}} * {{s|NastępnyArtykuł}} * {{s|PoprzedniArtykuł}} * {{s|NazwaAktualnyArtykuł}} | opis17 = L-Nawigacja | spis17 = * {{s|LinkAktualnaKsiążka}} * {{s|LinkNastępnyArtykuł}} * {{s|LinkPoprzedniArtykuł}} * {{s|LinkNastępnySubArtykuł}} * {{s|LinkPoprzedniSubArtykuł}} | opis18 = Artykuły | spis18 = * {{s|PierwszyArtykuł}} * {{s|OstatniArtykuł}} * {{s|PomiędzyArtykuł}} * {{s|LosowyArtykuł}} | opis19 = Numerowanie | spis19 = * {{s|PobierzNazwęNagłówka}} * {{s|PobierzNumerNagłówka}} * {{s|PobierzNazwęArtykułu}} * {{s|PobierzNumerArtykułu}} | opis20 = Linie | spis20 = * {{s|LiniaArtykułuKsiążki}} | opis21 = Nazwy | spis21 = * {{s|NazwaLinkuArtykułu}} * {{s|LiczbaArtykułówKsiążki}} * {{s|PoziomNazwyArtykułu}} * {{s|SubNazwaNadArtykułu}} * {{s|NazwaNadArtykułu}} * {{s|LinkNazwaNadArtykułu}} * {{s|LinkSubNazwaNadArtykułu}} | opis22 = N-Nagłówki | spis22 = * {{s|LosowyNagłówek}} * {{s|PomiędzyNagłówek}} * {{s|PierwszyNagłówek}} * {{s|OstatniNagłówek}} * {{s|LiczbaNagłówkówSpisu}} | opis23 = Autorskie | spis23 = * {{s|Licencja}} | opis24 = Zawartości | spis24 = * {{s|StronaSubst}} * {{s|KsiążkaSubst}} * {{s|ArtykułSubst}} | opis25 = Linki | spis25 = * {{s|Sekcja referencyjna}} (spis artykułów) * {{s|StopkaSpisTreści}} | opis26 = Książkowe | spis26 = * {{s|Wolumin}} * {{s|SortWolumin}} * {{s|SortKuchWolumin}} * {{s|LinkWolumin}} * {{s|StronaWolumin}} * {{s|T}} * {{s|T2}} * {{s|Q}} * {{s|N}} * {{s|A}} * {{s|Status}} * {{s|Kompletność}} * {{s|Kompletność junior}} * {{s|Książka}} | opis27 = Indeksowanie | spis27 = * {{s|Kotwica}} * {{s|Indeksuj}} | opis28 = Spis artykułów | spis28 = * {{s|Link wewnętrzny}} * {{s|LinkOgólne}} * {{s|LinkGłówna}} * {{s|LinkWikijunior}} * {{s|LinkWikijunior2}} * {{s|LinkUżytkownik}} * {{s|LinkUżytkownik2}} * {{s|LinkProjekt}} * {{s|LinkProjekt2}} | kategoria = Wikibooks }} 70vdssxq5k1f9pf54q6l5rp9l856yay Szablon:LinkObiekt/opis 10 44982 560389 547618 2026-11-01T09:56:44Z Persino 2851 /* Zobacz też */ 560389 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|StronicowyParser}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} {{Szablony stronicowe}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Instrukcja obsługi == Szablon tworzy odnośnik do {{LinkObiekt/opis/obiektu|{{ROOTPAGENAME}}}}, napisanego w wywołaniu szablonów: {{LinkObiekt/opis/s obiektu|{{ROOTPAGENAME}}}}, o danym numerze i indeksie w tym samym module lub w innym, a nawet do innego podręcznika. Uchwyt do {{LinkObiekt/opis/obiektu|{{ROOTPAGENAME}}}} jest tłumaczony na numer (odnośnik) do {{LinkObiekt/opis/obiektu|{{ROOTPAGENAME}}}} generowany za pomocą wpisów na stronie głównej podręcznika w postaci szablonów: {{s|SpisTreści|nazwa artykulu}} (bez pełnej nazwy książki), oraz szablonów linków sekcji: {{s|Sekcja referencyjna}} (skrót: {{s|sr}}), i innych: {{s|Link wewnętrzny}} (skrót: {{s|ly}}), {{s|LinkOgólne}} (skrót: {{s|lo}}), {{s|LinkOgólne2}} (skrót: {{s|lo2}}), {{s|LinkGłówna}} (skrót: {{s|lg}}), {{s|LinkWikijunior}} (skrót: {{s|lj}}), {{s|LinkWikijunior2}} (skrót: {{s|lj2}}), {{s|LinkUżytkownik}} (skrót: {{s|lż}}), {{s|LinkUżytkownik2}} (skrót: {{s|lż2}}), {{s|LinkProjekt}} (skrót: {{s|lr}}) i {{s|LinkProjekt2}} (skrót: {{s|lr2}}), które generują spisy treści danych modułów, jeżeli jest włączone tłumaczenie uchwytu {{LinkObiekt/opis/obiektu|{{ROOTPAGENAME}}}} na jego numer (domyślnie włączone). {{LinkObiekt/opis/linki|{{ROOTPAGENAME}}}} === Użycie === Będziemy tutaj wypisywali zmienne szablonu {{s|{{ROOTPAGENAME}}}}{{#ifeq:{{ROOTPAGENAME}}|LinkObiekt|&nbsp;ze zmienną inną niż '''typ''' lub z użyciem '''typ {{=}} obiekt'''}}. ---- ; Zmienne w wywołaniu podstawowym tego szablonu * {{Code|1}} lub {{Code|uchwyt}} = uchwyt, * {{Code|2}} lub {{Code|nazwa artykułu}} = nazwa modułu, bez adresu książki, (opcjonalny). ; Dodatkowe opcje * {{Code|3}} lub {{Code|nazwa książki}} = pełna lub względna nazwa książki (opcjonalny), * {{Code|4}} lub {{Code|skrót}} = skrótowa nazwa podręcznika (opcjonalny), * {{Code|5}} lub {{Code|łącznik}} = łącznik (opcjonalny). ---- ; Zmienne w wywołaniu pełnym tego szablonu * {{Code|1}} lub {{Code|uchwyt}} = uchwyt, * {{Code|2}} lub {{Code|nazwa artykułu}} = nazwa modułu (opcjonalny), * {{Code|3}} lub {{Code|nazwa książki}} = pełna lub względna nazwa książki (opcjonalny), * {{Code|4}} lub {{Code|skrót}} = skrótowa nazwa podręcznika (opcjonalny), * {{Code|5}} lub {{Code|łącznik}} = łącznik (opcjonalny). ; Podstawowe skompensowane opcje dotyczące czcionek * {{Code|czcionka}} = (rozmiar, wysokość linii, rodzina, wariant, rozciągnięcie, waga i styl) czcionki (opcjonalny). ; Dalsze nieskompensowane opcje dotyczące czcionek * {{Code|rozmiar czcionki}} = rozmiar czcionki linku (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|wysokość linii czcionki}} = wysokość linii wiersza czcionki linku (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|rodzina czcionki}} = rodzina czcionki linku (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|wariant czcionki}} = wariant czcionki linku (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|rozciągnięcie czcionki}} = rozciągnięcie czcionki linku (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|waga czcionki}} = waga czcionki linku (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów), * {{Code|styl czcionki}} = styl czcionki linku (opcjonalny, domyślnie ustawione przez przeglądarkę lub za pomocą stylów). ---- Powyższe zmienne o nazwie określonej liczbą naturalną można użyć również bez nazywania parametrów. ---- ; Uwagi * Szablon {{s|{{ROOTPAGENAME}}}} ma jeszcze jeden parametr: {{Parametr|bez automatu}} wartość niepusta, tzn. wyłączone, czyli np.: {{Code|tak}}, i włączone, gdy wartość pusta, tłumaczenie uchwytu na numer wzoru, (opcjonalny domyślnie ustawiony na wartość pustą). * Parametr {{Parametr|bez kategorii stronicowych}}, gdy wartość niepusta, to wtedy wyłącza generowanie dodatkowych kategorii, (opcjonalny, automatycznie ustawiony na wartość pustą). === Przykłady: === * '''Przykład:''' {{s|{{ROOTPAGENAME}}|1.2}}, '''wynik:''' {{ {{ROOTPAGENAME}}|1.2|bez automatu=tak}}. * '''Przykład:''' {{s|{{ROOTPAGENAME}}|2.3|Wprowadzenie|Książka}}, '''wynik:''' {{ {{ROOTPAGENAME}}|2.3|Wprowadzenie|Książka|bez automatu=tak}}. * '''Przykład:''' {{s|{{ROOTPAGENAME}}|2.3|Wprowadzenie|Książka|MS}}, '''wynik:''' {{ {{ROOTPAGENAME}}|2.3|Wprowadzenie|Książka|MS|-|bez automatu=tak}}. * '''Przykład:''' {{s|{{ROOTPAGENAME}}|2.3|Wprowadzenie|Książka|MS|+}}, '''wynik:''' {{ {{ROOTPAGENAME}}|2.3|Wprowadzenie|Książka|MS|+|bez automatu=tak}}. == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "uchwyt": { "aliases": [ "1" ], "description": "Uchwyt obiektu.", "type": "string", "required": true }, "nazwa artykułu": { "aliases": [ "2" ], "description": "Nazwa artykułu.", "type": "wiki-page-name", "suggested": true }, "nazwa książki": { "aliases": [ "3" ], "description": "Nazwa książki", "type": "wiki-page-name", "suggested": true }, "skrót": { "aliases": [ "4" ], "description": "Skrót książki.", "type": "string" }, "łącznik": { "aliases": [ "5" ], "description": "Łącznik pomiędzy skrótem siążki, a numerem obiektu.", "type": "string" }, "czcionka": { "description": "Styl czcionki linku.", "type": "string" }, "wysokość linii czcionki": { "description": "Wysokość linii wiersza czcionki linku.", "type": "string" }, "rodzina czcionki": { "description": "Rodzina czcionki linku.", "type": "string" }, "wariant czcionki": { "description": "Wariant czcionki linku.", "type": "string" }, "rozciągnięcie czcionki": { "description": "Rozciągnięcie czcionki linku.", "type": "string" }, "waga czcionki": { "description": "Waga czcionki linku.", "type": "string" }, "styl czcionki": { "description": "Styl czcionki linku.", "type": "string" }, "rozmiar czcionki": { "description": "Rozmiar czcionki linku.", "type": "string" } }, "paramOrder": [ "uchwyt", "nazwa artykułu", "nazwa książki", "skrót", "łącznik", "czcionka", "rozmiar czcionki", "wysokość linii czcionki", "rodzina czcionki", "wariant czcionki", "rozciągnięcie czcionki", "waga czcionki", "styl czcionki" ], "description": "Szablon tworzy linki do różnego rodzaju obiektów na stronie podręczników." } </templatedata> == Zobacz też == ; Szablony wypowiedzeń * {{s|Wypowiedzenie}} - do którego szablon linkuje, też ogólny szablon linków {{s|LinkObiekt}}, też do niego mogą odwoływać się inne szablony do szablonów matematycznych, * {{s|LinkObiekt}} - ogólny szablon linków odnosząca się do szablonów wypowiedzeń, też również {{s|Wypowiedzenie}}{{#ifeq:{{ROOTPAGENAME}}|LinkObiekt|.|, * {{s|{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^Link(.*)}}}} - do którego linkuje ten szablon.}} ; Szablony sekcji wewnątrz podręcznikowe * {{s|Sekcja referencyjna}} - linki wewnętrzne tylko wewnątrz-podręcznikowe do obiektu na tej samej stronie lub innej. ; Szablony sekcji wewnątrz- i między-podręcznikowe * {{s|Osobny artykuł}}, {{s|Zobacz głównie}}, {{s|Zobacz sekcję}}, {{s|Zobacz też}} i {{s|Główny artykuł}} - szablony ogólne sekcji jako odnośniki do artykułów (książek), mówiące na co kłaść szczególną uwagę, co obrazuje nazwy tych szablonów, * {{s|Zobacz sekcję}} - szablon szczególny sekcji do artykułu, w nim do sekcji artykułu, podręcznika lub hasła. {{Szablony linków wewnątrz- i między-serwisowych}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony linków stronicowych}} {{#switch:{{ROOTPAGENAME}} |LinkTwierdzenie|LinkHipoteza|LinkLemat|LinkKryterium|LinkDowód|LinkPostulat|LinkPostulaty|LinkOkreślenie|LinkZadanie|LinkPraktyka|LinkProcedura|LinkSchemat|LinkTbl = {{Kategoria|Szablony stronicowe matematyczne wypowiedzeń linkowe}} |#default = {{Kategoria|Szablony stronicowe matematyczne inne linkowe}} }} </includeonly> ne39aqxztuogb9m8tc12rqwms478rxk Moduł:StronicowyParser/obiekty 828 45007 560367 555441 2026-11-01T08:54:06Z Persino 2851 560367 Scribunto text/plain local p={}; local m={}; p.wypowiedzi={ {"Twierdzenie", nil,nil,"Twierdzenia",2,"twierdzeniami","twierdzeń",}, {"Hipoteza",nil,nil,"Hipotezy", 2,"hipotezami","hipotez",}, {"Lemat", nil,nil,"Lematu",2,"lematami","lematów",}, {"Kryterium", nil,nil,"Kryterium",2,"kryteriami","kryteriów",}, {"Dowód", nil,nil,"Dowodu",2,"dowodami","dowodów",}, {"Postulat", nil,nil,"Postulatu",2,"postulatami","postulatów",}, {"Postulaty", nil,nil,"Postulatów",2,"grupami postulatów","grup postulatów",}, {"Określenie", nil,nil,"Określenia",2,"definicjami","definicji",}, {"Zadanie", nil,nil,"Zadania",2,"zadaniami","zadań",}, {"Praktyka",nil,nil,"Praktyki",2,"ćwiczeniami","ćwiczeń",}, {"Procedura",nil,nil,"Procedury",2,"procedurami","procedur",}, {"Schemat",nil,nil,"Schematu",2,"schematami","schematów",}, {"Tbl",nil,nil,"Tbl",2,"definicjami tabel","definicji tabel"}, }; p.obiekty={"Obiekt",nil,nil,"Obiektu",2,"nienazwanymi obiektami","nienazwanych obiektów",}; p.normalne={ {"Wzór",{"Wzór2","CentrujWzór","CentrujWzór2","MathMLWzór","MathMLWzór2","CentrujMathMLWzór","CentrujMathMLWzór2",},nil,"Wzoru",2,"wzorami","wzorów",}, {"Rysunek",nil,nil,"Rysunku",2,"rysunkami","rysunków",}, {"Patrz",nil,nil,"Patrz",1,"patrzeniem","patrzenia",}, {"ZobaczTeż",nil,nil,"ZobaczTeż",1,"zobaczeniem też","zobaczenia też",}, }; p.napisy_wprowadzenia_tekstu={ {"Śródtytuł",nil,{"LinkŚródtytułTutaj",},"Śródtytułu",1,"nagłówkami","nagłówków",}, }; p.tekst={ {"Śródtekst",nil,nil,"Śródtekstu",2,"tekstami","tekstów",}, }; p.nazwa_szablonu_wprowadzenia_tekstu="Śródtytuł"; m.LinkiSzablonyNieNumerowane=function(tab_szablony_nienumerowane,czy_link) local function DalszeLinkiWprowadzeniaTekstu(linki_naglowka,t,i) if(type(linki_naglowka)=="table")then for _,wartosc in ipairs(linki_naglowka)do i=i+1; t[i]=wartosc; end; else i=i+1; t[i]=linki_naglowka; end; return t,i; end; local s={}; for _,wartosc in ipairs(tab_szablony_nienumerowane)do s[wartosc[1]]={}; local t=s[wartosc[1]]; local i=1; t[i]=(czy_link and "Link" or "Pobierz")..wartosc[1]; t,i=DalszeLinkiWprowadzeniaTekstu(wartosc[3],t,i); end; return s; end; m.LinkiSzablonyNapisuWprowadzeniaTekstu=function() return m.LinkiSzablonyNieNumerowane(p.napisy_wprowadzenia_tekstu,true); end; m.LinkiSzablonyTekstu=function() return m.LinkiSzablonyNieNumerowane(p.tekst,false); end; m.NienumerowaneSzablony=function(tab_szablony_nienumerowane) local s={}; for _,wartosc in ipairs(tab_szablony_nienumerowane)do s[wartosc[1]]=true; end; return s; end; m.NienumerowaneSzablonyNapisuWprowadzeniaTekstu=function() return m.NienumerowaneSzablony(p.napisy_wprowadzenia_tekstu); end; m.NienumerowaneSzablonyTekstu=function() return m.NienumerowaneSzablony(p.tekst); end; p.linki_szablony_wprowadzenia_tekstu=m.LinkiSzablonyNapisuWprowadzeniaTekstu(); p.nienumerowane_z_uchwytami_szablony_wprowadzenia_tekstu=m.NienumerowaneSzablonyNapisuWprowadzeniaTekstu(); p.linki_szablony_tekstu=m.LinkiSzablonyTekstu(); p.nienumerowane_z_uchwytami_szablony_tekstu=m.NienumerowaneSzablonyTekstu(); p.uklad_autonawigacji="Układ autonawigacji"; p.bez_uchwytow_spis_rzeczy_strony={ ["TOC"]=true, ["TOCRamka"]=true, }; p.szablony_z_lokalnym_spisem_rzeczy_strony={ ["TOC limit"]=true, ["Spis treści"]=true, ["TOCright"]=true, ["Spis treści zwinięty"]=true, }; p.szablony_kontenerowe={ ["Sekcja referencyjna"]=true, ["Sr"]=true, ---------------------------------- ["ListaNagłówkówKsiążki"]=true, ["LiniaArtykułuKsiążki"]=true, ---------------------------------- ["PomiędzyNagłówek"]=true, ["LosowyNagłówek"]=true, ["PierwszyNagłówek"]=true, ["OstatniNagłówek"]=true, ["LiczbaNagłówkówSpisu"]=true, ---------------------------------- ["AktualnaKsiążka"]=true, ["NastępnyArtykuł"]=true, ["PoprzedniArtykuł"]=true, ["NazwaAktualnyArtykuł"]=true, ["LinkAktualnaKsiążka"]=true, ["LinkNastępnyArtykuł"]=true, ["LinkPoprzedniArtykuł"]=true, ---------------------------------- ["LinkNastępnySubArtykuł"]=true, ["LinkPoprzedniSubArtykuł"]=true, ---------------------------------- ["PierwszyArtykuł"]=true, ["OstatniArtykuł"]=true, ["PomiędzyArtykuł"]=true, ["LosowyArtykuł"]=true, ["PobierzNazwęArtykułu"]=true, ["PobierzNumerArtykułu"]=true, ["NazwaLinkuArtykułu"]=true, -------------------------------- ["PobierzNazwęNagłówka"]=true, ["PobierzNumerNagłówka"]=true, --------------------------------- ["LiczbaArtykułówKsiążki"]=true, ["PoziomNazwyArtykułu"]=true, --------------------------------- ["SubNazwaNadArtykułu"]=true, ["NazwaNadArtykułu"]=true, ["LinkNazwaNadArtykułu"]=true, ["LinkSubNazwaNadArtykułu"]=true, ----------------------------------- ["Autonawigacja"]=true, }; p.szablony_stronicowe_niekontenerowe={ ["ArtykułSubst"]=true, }; p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; ----szablony stronicowego parsera function m.SzablonyStronicowegoParsera() local t={}; t.szablony_kontenerowe={}; local s=t.szablony_kontenerowe; t.szablony_wprowadzenia_tekstu={}; local r=t.szablony_wprowadzenia_tekstu; t.szablony_tekstu={}; local q=t.szablony_tekstu; local function SzablonyUchwytoweNapisuWprowadzeniaTekstu(naglowki,r) for _,szablony_naglowka in ipairs(naglowki) do r[szablony_naglowka[1]]=true; if(szablony_naglowka[2])then if(type(szablony_naglowka[2])=="table")then for _,wartosc in ipairs(szablony_naglowka[2])do r[wartosc]=true; end; else r[szablony_naglowka[2]]=true; end; end; end; end; SzablonyUchwytoweNapisuWprowadzeniaTekstu(p.napisy_wprowadzenia_tekstu,r); SzablonyUchwytoweNapisuWprowadzeniaTekstu(p.tekst,q); local function TabNumer(n,obiekty_szablon,s) if(obiekty_szablon[n])then if(type(obiekty_szablon[n])=="table")then for _,wartosc in ipairs(obiekty_szablon[n])do s[wartosc]=true; end; else s[obiekty_szablon[n]]=true; end; end; end; local function RozpatrywanaTablica(tab_obiekty,s,czy_link) for _,obiekty_szablon in ipairs(tab_obiekty)do s[obiekty_szablon[1]]=true; s[(czy_link and "Link" or "Pobierz")..obiekty_szablon[1]]=true; TabNumer(2,obiekty_szablon,s); TabNumer(3,obiekty_szablon,s); end; end; RozpatrywanaTablica(p.normalne,s,true); RozpatrywanaTablica(p.wypowiedzi,s,true); RozpatrywanaTablica(p.napisy_wprowadzenia_tekstu,s,true); RozpatrywanaTablica(p.tekst,s,false); TabNumer(2,p.obiekty,s); TabNumer(3,p.obiekty,s); local function IndeksowaneNaTak(tab_obiekty,s) for indeks,_ in pairs(tab_obiekty)do s[indeks]=true; end; end; IndeksowaneNaTak(p.bez_uchwytow_spis_rzeczy_strony,s); IndeksowaneNaTak(p.szablony_kontenerowe,s); return t; end; p.szablony_stronicowego_parsera=m.SzablonyStronicowegoParsera(); ----koniec szablony pudełka ----Tablica obiektów function m.TablicaObiektowychForm() local s={};local r={}; for _,element_w_tablicy_obiekty in pairs(p.normalne)do s[#s+1]=element_w_tablicy_obiekty; element_w_tablicy_obiekty.CzyLink=true; element_w_tablicy_obiekty.CzyNum=true; end; for _,element_w_tablicy_obiekty in pairs(p.wypowiedzi)do s[#s+1]=element_w_tablicy_obiekty; element_w_tablicy_obiekty.CzyLink=true; element_w_tablicy_obiekty.CzyNum=true; end; for _,element_w_tablicy_obiekty in pairs(p.napisy_wprowadzenia_tekstu)do s[#s+1]=element_w_tablicy_obiekty; element_w_tablicy_obiekty.CzyLink=true; element_w_tablicy_obiekty.CzyNum=false; end; for _,element_w_tablicy_obiekty in pairs(p.tekst)do s[#s+1]=element_w_tablicy_obiekty; element_w_tablicy_obiekty.CzyLink=false; element_w_tablicy_obiekty.CzyNum=false; end; for _,element_w_tablicy_obiekty in pairs(p.normalne)do r[#s+1]=element_w_tablicy_obiekty; end; for _,element_w_tablicy_obiekty in pairs(p.wypowiedzi)do r[#s+1]=element_w_tablicy_obiekty; end; p.tablica_mozliwych_obiektow_bez_obiektu_nienazwanego=s; p.tablica_mozliwych_numerowanych_obiektow_bez_obiektu_nienazwanego=r; s[#s+1]=p.obiekty; p.obiekty.CzyLink=true; p.obiekty.CzyNum=true; return s; end; ---- m.ElementyObiektoweNumerowaneINienumerowaneZUchwytami=function() local function Obiekty(s,obiekty) for _,tab_obiektow in ipairs(obiekty)do s[tab_obiektow[1]]={tab_obiektow[1],tab_obiektow[5],}; local tab_szablony=tab_obiektow[2]; if(tab_szablony)then if(type(tab_szablony)=="table")then for _,element in ipairs(tab_szablony)do s[element]={tab_obiektow[1],tab_obiektow[5],}; end; else s[tab_szablony]={tab_obiektow[1],tab_obiektow[5],}; end; end; end; end; local s={};local r={};local q={}; Obiekty(s,p.wypowiedzi); Obiekty(s,p.normalne); Obiekty(r,p.napisy_wprowadzenia_tekstu); Obiekty(q,p.tekst); return {numerowane_obiekty=s,nienumerowane_obiekty_napisu_wprowadzenia_tekstu=r,nienumerowane_obiekty_tekstu=q,}; end; p.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane=m.ElementyObiektoweNumerowaneINienumerowaneZUchwytami(); m.ElementyReferencjiObiektowychNumerowanychZUchwytami=function() local function Obiekty(s,linkobiekty,czy_link) for _,tab_obiektow in ipairs(linkobiekty)do s[(czy_link and "Link" or "Pobierz")..tab_obiektow[1]]=tab_obiektow[1]; local tab_szablony=tab_obiektow[3]; if(tab_szablony)then if(type(tab_szablony)=="table")then for _,element in ipairs(tab_szablony)do s[element]=tab_obiektow[1]; end; else s[tab_szablony]=tab_obiektow[1]; end; end; end; end; local s={};local r={};local q={}; Obiekty(s,p.wypowiedzi,true); Obiekty(s,p.normalne,true); Obiekty(r,p.napisy_wprowadzenia_tekstu,true); Obiekty(q,p.tekst,false); return {numerowane_obiekty=s,nienumerowane_obiekty_napisu_wprowadzenia_tekstu=r,nienumerowane_obiekty_tekstu=q,}; end; p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=m.ElementyReferencjiObiektowychNumerowanychZUchwytami(); m.FormatElementowyObiektowy=function() local s={}; local function Obiekty(s,obiekty) for _,tab_obiektow in ipairs(obiekty)do s[tab_obiektow[1]]=true; end; end; Obiekty(s,p.wypowiedzi); Obiekty(s,p.normalne); return s; end; p.format_elementowy_obiektowy=m.FormatElementowyObiektowy(); m.FormatElementowyReferencjiObiektowych=function() local s={}; local function Obiekty(s,obiekty) for _,tab_obiektow in ipairs(obiekty)do local element=mw.getContentLanguage():lcfirst(tab_obiektow[1]); s[element]=true; end; end; Obiekty(s,p.wypowiedzi); Obiekty(s,p.normalne); return s; end; p.format_elementowy_referencji_obiektowy=m.FormatElementowyReferencjiObiektowych(); ---- ---- p.tablica_obiektowych_form=m.TablicaObiektowychForm(); p.szablony_stron_zbiorczych={ ["KsiążkaSubst"]=true, ["StronaSubst"]=true, }; p.inne_szablony_stron_zbiorczych={ ["Sekcja referencyjna"]=true, ["Sr"]=true, } m.StronyZbiorcze=function() local s={}; local function Ziorcze(tab) for name,_ in pairs(tab)do s[name]=true; end; end; Ziorcze(p.szablony_stron_zbiorczych); Ziorcze(p.inne_szablony_stron_zbiorczych); return s; end; p.strona_zbiorcza=m.StronyZbiorcze(); p.strona_start_inne={ ["StandardowaStronaStart"]=true, ["PodstawowaStronaStart"]=true, ["ProstaStronaStart"]=true, }; p.strona_start={ ["StronaStart"]=true, }; p.strona_start_ze_spisem_rzeczy_strony={ ["UnikatowaStronaStart"]=true, ["UnikalnaStronaStart"]=true, ["SkomplikowanaStronaStart"]=true, }; p.strona_start_analiza_zaawansowana_spis_rzeczy_strony={ ["SkomplikowanaStronaStart"]=true, }; m.SzablonyFormartowaniaTekstu=function() local s={}; local function DodatDoTablicy(tab) for name,_ in pairs(tab)do s[name]=true; local name_koniec,_=mw.ustring.gsub(name,"Start$","Koniec"); s[name_koniec]=true; end; end; DodatDoTablicy(p.strona_start); DodatDoTablicy(p.strona_start_ze_spisem_rzeczy_strony); DodatDoTablicy(p.strona_start_analiza_zaawansowana_spis_rzeczy_strony); DodatDoTablicy(p.strona_start_inne); return s; end; p.szablony_stronicowe_formatowania_tekstu=m.SzablonyFormartowaniaTekstu(); p.tablica_nazw_ramek_lua={ "StronicowyParser", }; ----Koniec tablica obiektów p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={ ["licencja"]=true, ["inne"]=true, ["bibliografia"]=true, ["zobacz też"]=true, ["linki zewnętrzne"]=true, --[[["dedykacja"]=true,]] }; p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; --[[p.tablica_nazw_wprowadzenia_tekstu_dodatkowych={ ["bibliografia"]=true, ["literatura"]=true, };]] 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]*", }; 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,}, }; p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2, }; p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={ ["Cytuj"]=true, ["Cytuj stronę"]=true, ["Cytuj pismo"]=true, ["Cytuj odcinek"]=true, ["Cytuj książkę"]=true, ["Cytuj grę komputerową"]=true, }; p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; 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, --[[["LinkGłówna"]=true, ["LinkWikijunior"]=true, ["LinkWikijunior2"]=true, ["LinkProjekt"]=true, ["LinkProjekt2"]=true, ["LinkUżytkownik"]=true, ["LinkUżytkownik2"]=true,]] }; p.kody_szablony_linkowe_przestrzenne={ ["Główna"]={"",}, ["Wikijunior"]={"Wikijunior",}, ["Kategoria"]={"Category",}, ["Plik"]={"File",}, ["Projekt"]={"Project",}, ["Szablon"]={"Template",}, ["Użytkownik"]={"User",}, ["Pomoc"]={"Help",}, ["Moduł"]={"Module",}, ["Komunikat"]={"MediaWiki",}, ["Specjalna"]={"Special",}, ["Wikiprojekt"]={"Wikiproject","w",}, ["Portal"]={"Portal","w",}, ["Extension"]={"Extension","mw",}, }; p.kody_inne_szablony_linkowe_inteligentne={ ["Sekcja referencyjna"]=true, ["Sr"]=true, }; p.kody_szablony_linkowe_projektowe={ ["Pedia"]="w", ["Źródła"]="s", ["Cytaty"]="q", ["News"]="n", ["Słownik"]="wikt", ["Podróże"]="voy", ["Wersytet"]="betawikiversity", ["Species"]="wikispecies", ["Commons"]="commons", ["Dane"]="d", ["MediaWiki"]="mw", ["MetaWiki"]="m", }; p.kody_szablony_linkowe_dialektu={ ["En"]="en", }; p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; p.szablony_spisu={ ["SpisTreści"]=true, }; p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; p.szablony_dokumentacji={ ["Dokumentacja"]=true, }; p.szablony_wykorzystywane_przez_strony_zbiorcze={ ["Sekcja referencyjna"]=true, ["Sr"]=true, }; p.szablony_licencji={ ["Licencja"]=true, }; p.szablony_ozdobne_stron_woluminu={ ["MDL:RozszerzonyLink"]=true, }; p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; p.strony_main_page_projektu={ ["Wikijunior:Strona główna"]=true, ["Wikibooks:Strona główna"]=true, ["Strona główna"]=true, ["Main Page"]=true, } p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; p.szablony_przypisowe={ ["Przypisy"]=true, ["Uwagi"]=true, ["Przypisy-lista"]=true, }; p.napisy_wprowadzenia_tekstu_przypisowych={ ["Przypisy"]=true, ["Uwagi"]=true, ["Bibliografia"]=true, ["Licencja"]=true, }; p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, } p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; p.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne={ ["g"]="Główna", ["c"]="Specjalna", ["k"]="Kategoria", ["f"]="Plik", ["m"]="Komunukat", ["d"]="Moduł", ["p"]="Pomoc", ["r"]="Projekt", ["s"]="Szablon", ["j"]="Wikijunior", ["ż"]="Użytkownik", ["e"]="Extension", ["x"]="Property", ["w"]="Wikiprojekt", ["t"]="Portal", }; p.nazwy_projektowe_serwisy_linkowe_inteligentne={ ["p"]="Pedia", ["h"]="EnPedia", ["s"]="Słownik", ["x"]="Cytaty", ["ź"]="Źródła", ["d"]="Podróże", ["g"]="Species", ["z"]="News", ["r"]="Wersytet", ["w"]="Wikia", ["c"]="Commons", ["n"]="Dane", ["k"]="MediaWiki", ["m"]="MetaWiki", ["b"]="En", }; p.przekierowania_szablonowe_linkowe_inteligentne_inne={ ["Lz"]="LinkURL", ["Lb"]="LinkWB", ["Sr"]="Sekcja referencyjna", ["Ly"]="Link wewnętrzny", }; p.nazwy_szablonowe_kolidacja={ --["Ltr"]=true, }; p.litery_przestrzeni_kolidacja={ --["ř"]="r", }; p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; p.szablony_linkowe_spisu_rzeczy={ ["Sekcja referencyjna"]={{"strona","s",1,},{"nazwa","n",2,},{"podstrona","p",3},{"ustęp","u",4},{"od małej","m"},{"od dużej","d",},{"nazwa przestrzeni nazw",},{"nazwa jednostki",},}, }; return p; jx1cqxi7e2jaj516y8nzfn7fdwsr8db Szablon:LinkObiekt/typ 10 45031 560387 552071 2026-11-01T09:47:22Z Persino 2851 560387 wikitext text/x-wiki <includeonly>{{#switch:{{{cecha|}}} | id = {{#switch:{{{typ|obiekt}}}|wzór=wzór|rysunek=rysunek|zobaczteż=zobaczteż|patrz=patrz|twierdzenie=twierdzenie|hipoteza=hipoteza|lemat=lemat|kryterium=kryterium|dowód=dowód|postulat=postulat|postulaty=postulaty|określenie=określenie|zadanie=zadanie|praktyka=praktyka|procedura=procedura|schemat=schemat|tbl=tbl|obiekt|#default=obiekt}} | skrót={{#switch:{{{typ|obiekt}}}|wzór=|rysunek=Rys.|zobaczteż=Zobacz też:|patrz=Patrz:|twierdzenie=Twier.|hipoteza=Hip.|lemat=Lem.|kryterium=Kryt.|dowód=Dow.|postulat=Pos.|postulaty=Pos.'y|określenie=Def.|zadanie=Zad.|praktyka=Ćwicz.|procedura=Proc.|schemat=Schem.|tbl=Tbl.|obiekt|#default=Obj.}} | funkcja = {{#switch:{{{typ|obiekt}}}|wzór=Wzoru|rysunek=Rysunku|zobaczteż=ZobaczTeż|patrz=Patrz|twierdzenie=Twierdzenia|hipoteza=Hipotezy|lemat=Lematu|kryterium=Kryterium|dowód=Dowodu|postulat=Postulatu|postulaty=Postulatów|określenie=Określenia|zadanie=Zadania|praktyka=Praktyki|procedura=Procedury|schemat=Schematu|tbl=Tbl|obiekt|#default=Obiektu}} | nazwa = {{#switch:{{{typ|obiekt}}}|wzór=Wzór|rysunek=Rysunek|zobaczteż=ZobaczTeż|patrz=Patrz|twierdzenie=Twierdzenie|hipoteza=Hipoteza|lemat=Lemat|kryterium=Kryterium|dowód=Dowód|postulat=Postulat|postulaty=Postulaty|określenie=Określenie|zadanie=Zadanie|praktyka=Praktyka|procedura=Procedura|schemat=Schemat|tbl=Tbl|obiekt|#default=Obiekt}} |#default=(błąd)}}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy do szablonu {{s|LinkObiekt}}. ; Typ elememntu - parametr{{dk}} * {{Code|cecha}} - parametry cechy, , możliwe wartości poniżej, w innym rozdziale, * {{Code|typ}} - w jakim szablonie linków ma ma być wywoływany szablon: {{s|LinkObiekt}}, pośrednio, lub bezpośrednio, tutaj dla szablonu: {{s|LinkTwierdzenie}}, jest: '''Twierdzenie''', a dla szablonu bezpośredniego jest: '''Obiekt''', czyli dla jakiego szablonu linków, ma być zwrócona cecha, wskazana przez: {{Code|cecha}}. ; Wartości parametru {{Code|cecha}} funkcji{{dk}} * {{Code|id}} - przedrostek nagłówka w adresie linku, po którym następuje dolny myślnik, a po nim jest numer obiektu, do którego wskazuje link, * {{Code|skrót}} - skrót, wraz numerkiem, jaki pojawia się po uruchomieniu szablonu linków, przed numeracją, w nawiasie, * {{Code|funkcja}} - dokończenie nazwy funkcji według modułu: {{Code|{{m|StronicowyParser}}}}, po przednazwie '''Nazwa''', * {{Code|nazwa}} - Nazwa po wyrazie: '''Link''', po którym następuje ta nazwa, co w rezultacie daje nazwę linku, tuta dla szablonu: {{s|LinkTwierdzenie}}, jest '''Twierdzenie''', a dla: {{s|LinkObiekt}}, jest: '''Obiekt'''. }}<!-- -->{{Kategoria|Szablony problemów - technikalia}}<!-- --></noinclude> 3ggksrsyqb1hluyix88e29ciu3v7j8t Szablon:Wypowiedzenie/rodzaj 10 45033 560365 552070 2026-11-01T08:47:31Z Persino 2851 560365 wikitext text/x-wiki <includeonly>{{#switch:{{{cecha|}}} | id = {{#switch:{{{typ|obiekt}}}|Twierdzenie=twierdzenie|Hipoteza=hipoteza|Lemat=lemat|Kryterium=kryterium|Dowód=dowód|Postulat=postulat|Postulaty=postulaty|Określenie=określenie|Zadanie=zadanie|Praktyka=praktyka|Procedura=procedura|Schemat=schemat|Tbl=Tbl|Obiekt|#default=obiekt}} | skrót = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twier.|Hipoteza=Hip.|Lemat=Lem.|Kryterium=Kryt.|Dowód=Dow.|Postulat=Pos.|Postulaty=Pos.'y|Określenie=Def.|Zadanie=Zad.|Praktyka=Ćwicz.|Procedura=Proc.|Schemat=Schem.|Tbl=Tbl.|Obiekt|#default=Obj.}} | funkcja = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenia|Hipoteza=Hipotezy|Lemat=Lematu|Kryterium=Kryterium|Dowód=Dowodu|Postulat=Postulatu|Postulaty=Postulatów|Określenie=Określenia|Zadanie=Zadania|Praktyka=Praktyki|Procedura=Procedury|Schemat=Schematu|Tbl=Tbl|Obiekt|#default=Obiektu}} | nazwa = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Określenie|Zadanie=Zadanie|Praktyka=Praktyka|Procedura=Procedura|Schemat=Schemat|Tbl=Tbl|Obiekt|#default=Obiekt}} | rodzaj = {{#switch:{{{typ|Wypowiedzenie}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Definicja|Zadanie=Zadanie|Praktyka=Ćwiczenie|Procedura=Procedura|Schemat=Schemat|Tbl=Tbl|Obiekt|#default=Wypowiedzenie}} | #default = (błąd) }}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy do szablonu {{s|Wypowiedzenie}}. ; Typ elememntu - parametr{{dk}} * {{Code|cecha}} - parametry cechy, możliwe wartości poniżej, w innym rozdziale, * {{Code|typ}} - w jakim szablonie '''wypowiedzenia''' ma ma być wywoływany szablon: {{s|Wypowiedzenie}}, pośrednio, lub bezpośrednio, tutaj dla szablonu: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla szablonu bezpośredniego jest: '''Obiekt''', czyli dla jakiego szablonu wypowiedzenia, ma być zwrócona cecha, wskazana przez: {{Code|cecha}}. ; Wartości parametru {{Code|cecha}} funkcji{{dk}} * {{Code|id}} - przedrostek nagłówka w nazwie identyfikatora '''id''', do którego mogą linkować linki, po którym następuje dolny myślnik, a po nim jest numer obiektu, do którego wskazuje link, * {{Code|skrót}} - skrót, jaki się pojawia przed numeracją danego obiektu w nawiasie, * {{Code|funkcja}} - dokończenie nazwy funkcji według modułu: {{Code|{{m|StronicowyParser}}}}, po przednazwie '''Nazwa''', * {{Code|nazwa}} - nazwa szablonu wypowiedzenia, jakim np. dla szablonu: {{s|Twierdzenie}}, jest '''Twierdzenie''', a tutaj dla szablonu: {{s|Wypowiedzenie}}, jest: '''Obiekt''', popatrz na stronę: {{s|LinkObiekt/typ}}, * {{Code|rodzaj}} - nazwa szablonu obiektu, jaki się pojawia, w nazwie szablonu matematycznego, tutaj dla szablonu, np.: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla: {{s|Wypowiedzenie}}, jest: '''Wypowiedzenie''', w okienku danego szablonu. }}<!-- -->{{Kategoria|Szablony problemów - technikalia}}<!-- --></noinclude> nd5osxqrnt8nmiphjhg1pixy6zdjmv0 560366 560365 2026-11-01T08:50:58Z Persino 2851 560366 wikitext text/x-wiki <includeonly>{{#switch:{{{cecha|}}} | id = {{#switch:{{{typ|obiekt}}}|Twierdzenie=twierdzenie|Hipoteza=hipoteza|Lemat=lemat|Kryterium=kryterium|Dowód=dowód|Postulat=postulat|Postulaty=postulaty|Określenie=określenie|Zadanie=zadanie|Praktyka=praktyka|Procedura=procedura|Schemat=schemat|Tbl=Tbl|Obiekt|#default=obiekt}} | skrót = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twier.|Hipoteza=Hip.|Lemat=Lem.|Kryterium=Kryt.|Dowód=Dow.|Postulat=Pos.|Postulaty=Pos.'y|Określenie=Def.|Zadanie=Zad.|Praktyka=Ćwicz.|Procedura=Proc.|Schemat=Schem.|Tbl=Tbl.|Obiekt|#default=Obj.}} | funkcja = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenia|Hipoteza=Hipotezy|Lemat=Lematu|Kryterium=Kryterium|Dowód=Dowodu|Postulat=Postulatu|Postulaty=Postulatów|Określenie=Określenia|Zadanie=Zadania|Praktyka=Praktyki|Procedura=Procedury|Schemat=Schematu|Tbl=Tbl|Obiekt|#default=Obiektu}} | nazwa = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Określenie|Zadanie=Zadanie|Praktyka=Praktyka|Procedura=Procedura|Schemat=Schemat|Tbl=Definicja tabeli|Obiekt|#default=Obiekt}} | rodzaj = {{#switch:{{{typ|Wypowiedzenie}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Definicja|Zadanie=Zadanie|Praktyka=Ćwiczenie|Procedura=Procedura|Schemat=Schemat|Tbl=Tbl|Obiekt|#default=Wypowiedzenie}} | #default = (błąd) }}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy do szablonu {{s|Wypowiedzenie}}. ; Typ elememntu - parametr{{dk}} * {{Code|cecha}} - parametry cechy, możliwe wartości poniżej, w innym rozdziale, * {{Code|typ}} - w jakim szablonie '''wypowiedzenia''' ma ma być wywoływany szablon: {{s|Wypowiedzenie}}, pośrednio, lub bezpośrednio, tutaj dla szablonu: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla szablonu bezpośredniego jest: '''Obiekt''', czyli dla jakiego szablonu wypowiedzenia, ma być zwrócona cecha, wskazana przez: {{Code|cecha}}. ; Wartości parametru {{Code|cecha}} funkcji{{dk}} * {{Code|id}} - przedrostek nagłówka w nazwie identyfikatora '''id''', do którego mogą linkować linki, po którym następuje dolny myślnik, a po nim jest numer obiektu, do którego wskazuje link, * {{Code|skrót}} - skrót, jaki się pojawia przed numeracją danego obiektu w nawiasie, * {{Code|funkcja}} - dokończenie nazwy funkcji według modułu: {{Code|{{m|StronicowyParser}}}}, po przednazwie '''Nazwa''', * {{Code|nazwa}} - nazwa szablonu wypowiedzenia, jakim np. dla szablonu: {{s|Twierdzenie}}, jest '''Twierdzenie''', a tutaj dla szablonu: {{s|Wypowiedzenie}}, jest: '''Obiekt''', popatrz na stronę: {{s|LinkObiekt/typ}}, * {{Code|rodzaj}} - nazwa szablonu obiektu, jaki się pojawia, w nazwie szablonu matematycznego, tutaj dla szablonu, np.: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla: {{s|Wypowiedzenie}}, jest: '''Wypowiedzenie''', w okienku danego szablonu. }}<!-- -->{{Kategoria|Szablony problemów - technikalia}}<!-- --></noinclude> bei96lkwot2pvkhwk3hyhqvza92qat6 560368 560366 2026-11-01T08:55:16Z Persino 2851 560368 wikitext text/x-wiki <includeonly>{{#switch:{{{cecha|}}} | id = {{#switch:{{{typ|obiekt}}}|Twierdzenie=twierdzenie|Hipoteza=hipoteza|Lemat=lemat|Kryterium=kryterium|Dowód=dowód|Postulat=postulat|Postulaty=postulaty|Określenie=określenie|Zadanie=zadanie|Praktyka=praktyka|Procedura=procedura|Schemat=schemat|Tbl=Tbl|Obiekt|#default=obiekt}} | skrót = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twier.|Hipoteza=Hip.|Lemat=Lem.|Kryterium=Kryt.|Dowód=Dow.|Postulat=Pos.|Postulaty=Pos.'y|Określenie=Def.|Zadanie=Zad.|Praktyka=Ćwicz.|Procedura=Proc.|Schemat=Schem.|Tbl=Tbl.|Obiekt|#default=Obj.}} | funkcja = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenia|Hipoteza=Hipotezy|Lemat=Lematu|Kryterium=Kryterium|Dowód=Dowodu|Postulat=Postulatu|Postulaty=Postulatów|Określenie=Określenia|Zadanie=Zadania|Praktyka=Praktyki|Procedura=Procedury|Schemat=Schematu|Tbl=Tbl|Obiekt|#default=Obiektu}} | nazwa = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Określenie|Zadanie=Zadanie|Praktyka=Praktyka|Procedura=Procedura|Schemat=Schemat|Tbl=Definicja tabeli|Obiekt|#default=Obiekt}} | rodzaj = {{#switch:{{{typ|Wypowiedzenie}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Definicja|Zadanie=Zadanie|Praktyka=Ćwiczenie|Procedura=Procedura|Schemat=Schemat|Tbl=Definicjami tabel|Obiekt|#default=Wypowiedzenie}} | #default = (błąd) }}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy do szablonu {{s|Wypowiedzenie}}. ; Typ elememntu - parametr{{dk}} * {{Code|cecha}} - parametry cechy, możliwe wartości poniżej, w innym rozdziale, * {{Code|typ}} - w jakim szablonie '''wypowiedzenia''' ma ma być wywoływany szablon: {{s|Wypowiedzenie}}, pośrednio, lub bezpośrednio, tutaj dla szablonu: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla szablonu bezpośredniego jest: '''Obiekt''', czyli dla jakiego szablonu wypowiedzenia, ma być zwrócona cecha, wskazana przez: {{Code|cecha}}. ; Wartości parametru {{Code|cecha}} funkcji{{dk}} * {{Code|id}} - przedrostek nagłówka w nazwie identyfikatora '''id''', do którego mogą linkować linki, po którym następuje dolny myślnik, a po nim jest numer obiektu, do którego wskazuje link, * {{Code|skrót}} - skrót, jaki się pojawia przed numeracją danego obiektu w nawiasie, * {{Code|funkcja}} - dokończenie nazwy funkcji według modułu: {{Code|{{m|StronicowyParser}}}}, po przednazwie '''Nazwa''', * {{Code|nazwa}} - nazwa szablonu wypowiedzenia, jakim np. dla szablonu: {{s|Twierdzenie}}, jest '''Twierdzenie''', a tutaj dla szablonu: {{s|Wypowiedzenie}}, jest: '''Obiekt''', popatrz na stronę: {{s|LinkObiekt/typ}}, * {{Code|rodzaj}} - nazwa szablonu obiektu, jaki się pojawia, w nazwie szablonu matematycznego, tutaj dla szablonu, np.: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla: {{s|Wypowiedzenie}}, jest: '''Wypowiedzenie''', w okienku danego szablonu. }}<!-- -->{{Kategoria|Szablony problemów - technikalia}}<!-- --></noinclude> rtzujviihorfgfgqgkcovdq66kwv0k4 560369 560368 2026-11-01T08:57:53Z Persino 2851 560369 wikitext text/x-wiki <includeonly>{{#switch:{{{cecha|}}} | id = {{#switch:{{{typ|obiekt}}}|Twierdzenie=twierdzenie|Hipoteza=hipoteza|Lemat=lemat|Kryterium=kryterium|Dowód=dowód|Postulat=postulat|Postulaty=postulaty|Określenie=określenie|Zadanie=zadanie|Praktyka=praktyka|Procedura=procedura|Schemat=schemat|Tbl=Tbl|Obiekt|#default=obiekt}} | skrót = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twier.|Hipoteza=Hip.|Lemat=Lem.|Kryterium=Kryt.|Dowód=Dow.|Postulat=Pos.|Postulaty=Pos.'y|Określenie=Def.|Zadanie=Zad.|Praktyka=Ćwicz.|Procedura=Proc.|Schemat=Schem.|Tbl=Tbl.|Obiekt|#default=Obj.}} | funkcja = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenia|Hipoteza=Hipotezy|Lemat=Lematu|Kryterium=Kryterium|Dowód=Dowodu|Postulat=Postulatu|Postulaty=Postulatów|Określenie=Określenia|Zadanie=Zadania|Praktyka=Praktyki|Procedura=Procedury|Schemat=Schematu|Tbl=Tbl|Obiekt|#default=Obiektu}} | nazwa = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Określenie|Zadanie=Zadanie|Praktyka=Praktyka|Procedura=Procedura|Schemat=Schemat|Tbl=Tbl|Obiekt|#default=Obiekt}} | rodzaj = {{#switch:{{{typ|Wypowiedzenie}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Definicja|Zadanie=Zadanie|Praktyka=Ćwiczenie|Procedura=Procedura|Schemat=Schemat|Tbl=Definicjami tabel|Obiekt|#default=Wypowiedzenie}} | #default = (błąd) }}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy do szablonu {{s|Wypowiedzenie}}. ; Typ elememntu - parametr{{dk}} * {{Code|cecha}} - parametry cechy, możliwe wartości poniżej, w innym rozdziale, * {{Code|typ}} - w jakim szablonie '''wypowiedzenia''' ma ma być wywoływany szablon: {{s|Wypowiedzenie}}, pośrednio, lub bezpośrednio, tutaj dla szablonu: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla szablonu bezpośredniego jest: '''Obiekt''', czyli dla jakiego szablonu wypowiedzenia, ma być zwrócona cecha, wskazana przez: {{Code|cecha}}. ; Wartości parametru {{Code|cecha}} funkcji{{dk}} * {{Code|id}} - przedrostek nagłówka w nazwie identyfikatora '''id''', do którego mogą linkować linki, po którym następuje dolny myślnik, a po nim jest numer obiektu, do którego wskazuje link, * {{Code|skrót}} - skrót, jaki się pojawia przed numeracją danego obiektu w nawiasie, * {{Code|funkcja}} - dokończenie nazwy funkcji według modułu: {{Code|{{m|StronicowyParser}}}}, po przednazwie '''Nazwa''', * {{Code|nazwa}} - nazwa szablonu wypowiedzenia, jakim np. dla szablonu: {{s|Twierdzenie}}, jest '''Twierdzenie''', a tutaj dla szablonu: {{s|Wypowiedzenie}}, jest: '''Obiekt''', popatrz na stronę: {{s|LinkObiekt/typ}}, * {{Code|rodzaj}} - nazwa szablonu obiektu, jaki się pojawia, w nazwie szablonu matematycznego, tutaj dla szablonu, np.: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla: {{s|Wypowiedzenie}}, jest: '''Wypowiedzenie''', w okienku danego szablonu. }}<!-- -->{{Kategoria|Szablony problemów - technikalia}}<!-- --></noinclude> nj1q41u97warrvn2nqy0bbhsmsrzld1 560370 560369 2026-11-01T08:58:32Z Persino 2851 560370 wikitext text/x-wiki <includeonly>{{#switch:{{{cecha|}}} | id = {{#switch:{{{typ|obiekt}}}|Twierdzenie=twierdzenie|Hipoteza=hipoteza|Lemat=lemat|Kryterium=kryterium|Dowód=dowód|Postulat=postulat|Postulaty=postulaty|Określenie=określenie|Zadanie=zadanie|Praktyka=praktyka|Procedura=procedura|Schemat=schemat|Tbl=tbl|Obiekt|#default=obiekt}} | skrót = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twier.|Hipoteza=Hip.|Lemat=Lem.|Kryterium=Kryt.|Dowód=Dow.|Postulat=Pos.|Postulaty=Pos.'y|Określenie=Def.|Zadanie=Zad.|Praktyka=Ćwicz.|Procedura=Proc.|Schemat=Schem.|Tbl=Tbl.|Obiekt|#default=Obj.}} | funkcja = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenia|Hipoteza=Hipotezy|Lemat=Lematu|Kryterium=Kryterium|Dowód=Dowodu|Postulat=Postulatu|Postulaty=Postulatów|Określenie=Określenia|Zadanie=Zadania|Praktyka=Praktyki|Procedura=Procedury|Schemat=Schematu|Tbl=Tbl|Obiekt|#default=Obiektu}} | nazwa = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Określenie|Zadanie=Zadanie|Praktyka=Praktyka|Procedura=Procedura|Schemat=Schemat|Tbl=Tbl|Obiekt|#default=Obiekt}} | rodzaj = {{#switch:{{{typ|Wypowiedzenie}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Definicja|Zadanie=Zadanie|Praktyka=Ćwiczenie|Procedura=Procedura|Schemat=Schemat|Tbl=Definicjami tabel|Obiekt|#default=Wypowiedzenie}} | #default = (błąd) }}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy do szablonu {{s|Wypowiedzenie}}. ; Typ elememntu - parametr{{dk}} * {{Code|cecha}} - parametry cechy, możliwe wartości poniżej, w innym rozdziale, * {{Code|typ}} - w jakim szablonie '''wypowiedzenia''' ma ma być wywoływany szablon: {{s|Wypowiedzenie}}, pośrednio, lub bezpośrednio, tutaj dla szablonu: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla szablonu bezpośredniego jest: '''Obiekt''', czyli dla jakiego szablonu wypowiedzenia, ma być zwrócona cecha, wskazana przez: {{Code|cecha}}. ; Wartości parametru {{Code|cecha}} funkcji{{dk}} * {{Code|id}} - przedrostek nagłówka w nazwie identyfikatora '''id''', do którego mogą linkować linki, po którym następuje dolny myślnik, a po nim jest numer obiektu, do którego wskazuje link, * {{Code|skrót}} - skrót, jaki się pojawia przed numeracją danego obiektu w nawiasie, * {{Code|funkcja}} - dokończenie nazwy funkcji według modułu: {{Code|{{m|StronicowyParser}}}}, po przednazwie '''Nazwa''', * {{Code|nazwa}} - nazwa szablonu wypowiedzenia, jakim np. dla szablonu: {{s|Twierdzenie}}, jest '''Twierdzenie''', a tutaj dla szablonu: {{s|Wypowiedzenie}}, jest: '''Obiekt''', popatrz na stronę: {{s|LinkObiekt/typ}}, * {{Code|rodzaj}} - nazwa szablonu obiektu, jaki się pojawia, w nazwie szablonu matematycznego, tutaj dla szablonu, np.: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla: {{s|Wypowiedzenie}}, jest: '''Wypowiedzenie''', w okienku danego szablonu. }}<!-- -->{{Kategoria|Szablony problemów - technikalia}}<!-- --></noinclude> i74y1nurhnkp5g7izhyhsiocz87zwri 560388 560370 2026-11-01T09:50:11Z Persino 2851 560388 wikitext text/x-wiki <includeonly>{{#switch:{{{cecha|}}} | id = {{#switch:{{{typ|obiekt}}}|Twierdzenie=twierdzenie|Hipoteza=hipoteza|Lemat=lemat|Kryterium=kryterium|Dowód=dowód|Postulat=postulat|Postulaty=postulaty|Określenie=określenie|Zadanie=zadanie|Praktyka=praktyka|Procedura=procedura|Schemat=schemat|Tbl=tbl|Obiekt|#default=obiekt}} | skrót = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twier.|Hipoteza=Hip.|Lemat=Lem.|Kryterium=Kryt.|Dowód=Dow.|Postulat=Pos.|Postulaty=Pos.'y|Określenie=Def.|Zadanie=Zad.|Praktyka=Ćwicz.|Procedura=Proc.|Schemat=Schem.|Tbl=Tbl.|Obiekt|#default=Obj.}} | funkcja = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenia|Hipoteza=Hipotezy|Lemat=Lematu|Kryterium=Kryterium|Dowód=Dowodu|Postulat=Postulatu|Postulaty=Postulatów|Określenie=Określenia|Zadanie=Zadania|Praktyka=Praktyki|Procedura=Procedury|Schemat=Schematu|Tbl=Tbl|Obiekt|#default=Obiektu}} | nazwa = {{#switch:{{{typ|Obiekt}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Określenie|Zadanie=Zadanie|Praktyka=Praktyka|Procedura=Procedura|Schemat=Schemat|Tbl=Tbl|Obiekt|#default=Obiekt}} | rodzaj = {{#switch:{{{typ|Wypowiedzenie}}}|Twierdzenie=Twierdzenie|Hipoteza=Hipoteza|Lemat=Lemat|Kryterium=Kryterium|Dowód=Dowód|Postulat=Postulat|Postulaty=Postulaty|Określenie=Definicja|Zadanie=Zadanie|Praktyka=Ćwiczenie|Procedura=Procedura|Schemat=Schemat|Tbl=Definicja tabeli|Obiekt|#default=Wypowiedzenie}} | #default = (błąd) }}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy do szablonu {{s|Wypowiedzenie}}. ; Typ elememntu - parametr{{dk}} * {{Code|cecha}} - parametry cechy, możliwe wartości poniżej, w innym rozdziale, * {{Code|typ}} - w jakim szablonie '''wypowiedzenia''' ma ma być wywoływany szablon: {{s|Wypowiedzenie}}, pośrednio, lub bezpośrednio, tutaj dla szablonu: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla szablonu bezpośredniego jest: '''Obiekt''', czyli dla jakiego szablonu wypowiedzenia, ma być zwrócona cecha, wskazana przez: {{Code|cecha}}. ; Wartości parametru {{Code|cecha}} funkcji{{dk}} * {{Code|id}} - przedrostek nagłówka w nazwie identyfikatora '''id''', do którego mogą linkować linki, po którym następuje dolny myślnik, a po nim jest numer obiektu, do którego wskazuje link, * {{Code|skrót}} - skrót, jaki się pojawia przed numeracją danego obiektu w nawiasie, * {{Code|funkcja}} - dokończenie nazwy funkcji według modułu: {{Code|{{m|StronicowyParser}}}}, po przednazwie '''Nazwa''', * {{Code|nazwa}} - nazwa szablonu wypowiedzenia, jakim np. dla szablonu: {{s|Twierdzenie}}, jest '''Twierdzenie''', a tutaj dla szablonu: {{s|Wypowiedzenie}}, jest: '''Obiekt''', popatrz na stronę: {{s|LinkObiekt/typ}}, * {{Code|rodzaj}} - nazwa szablonu obiektu, jaki się pojawia, w nazwie szablonu matematycznego, tutaj dla szablonu, np.: {{s|Twierdzenie}}, jest: '''Twierdzenie''', a dla: {{s|Wypowiedzenie}}, jest: '''Wypowiedzenie''', w okienku danego szablonu. }}<!-- -->{{Kategoria|Szablony problemów - technikalia}}<!-- --></noinclude> 5flbvh1y7klneszbwkldwv75u8vx13e Moduł:Parametry 828 45669 560350 560349 2026-10-31T12:10:01Z Persino 2851 560350 Scribunto text/plain local p={}; p["LiczbaElementówNumerowanychTablicy"]=function(tabela, niepuste_wliczac,mnoga) local liczba_elementow_ponumerowanych_w_tablicy=0; local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local czy_mnoga=p.CzyTak(mnoga); for _1,_2 in ipairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1; if((czy_mnoga)and(liczba_elementow_ponumerowanych_w_tablicy>1))then return liczba_elementow_ponumerowanych_w_tablicy;end; end; end; return liczba_elementow_ponumerowanych_w_tablicy; end; p["LiczbaElementówNumerowanychSzablonu"]=function(frame) local parametry_modul=require("Module:Parametry"); return parametry_modul["LiczbaElementówNumerowanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]); end; p["LiczbaElementówNienazwanychTablicy"] = function(tabela,niepuste_wliczac,mnoga) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local czy_mnoga=p.CzyTak(mnoga); local liczba_elementow_nienazwanych_w_tablicy=0; for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_nienazwanych_w_tablicy=liczba_elementow_nienazwanych_w_tablicy+1; if((czy_mnoga)and(liczba_elementow_nienazwanych_w_tablicy>1))then return liczba_elementow_nienazwanych_w_tablicy;end; end; end; end; return liczba_elementow_nienazwanych_w_tablicy; end; p["LiczbaParametrówNienazwanychSzablonu"] = function (frame) return p["LiczbaElementówNienazwanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]) end; p["LiczbaElementówTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_w_tablicy=0; for _1,_2 in pairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1; end; end; return liczba_elementow_w_tablicy; end; p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,niepuste_wliczac,czy_formy_numerkowe) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_w_tablicy=0; local techniczne_modul=require("Module:Techniczne"); local wzor="^"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](przedrostek).."(%d+)$"; for _1,_2 in pairs(tabela)do local string_liczba=tonumber(_1) or nil; local czy_liczba=((string_liczba)and(czy_formy_numerkowe or p.TypeNumber(_1))and(string_liczba>0)); local zmienna=czy_liczba and przedrostek.._1 or nil; local element=(czy_liczba and tabela[zmienna] or nil) or (czy_liczba and tabela[_1] or (mw.ustring.match(tostring(_1),wzor) and tabela[_1] or nil) ); if(element)then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(element~="")))then liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1; end; end; end; return liczba_elementow_w_tablicy; end; function p.MaksymalnaLiczbaParametruNienazwanegoSzablonu(frame) return p.MaksymalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]); end; function p.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela, niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_ponumerowanych_w_tablicy=0; for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_ponumerowanych_w_tablicy=math.max(liczba_elementow_ponumerowanych_w_tablicy,_1); end; end; end; return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 0; end; function p.MinimalnaLiczbaParametruNienazwanegoSzablonu(frame) return p.MinimalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]); end; function p.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_ponumerowanych_w_tablicy; for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then if(not liczba_elementow_ponumerowanych_w_tablicy)then liczba_elementow_ponumerowanych_w_tablicy=_1; else liczba_elementow_ponumerowanych_w_tablicy=math.min(liczba_elementow_ponumerowanych_w_tablicy,_1); end; end; end; end; return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 1; end; function p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(tabela,podstawa_parametru, czy_od_zera) local liczba_maksimum=0; local liczba_minimum; for nazwa_parametru,wartosc_parametru in pairs(tabela)do local liczba_z_parametru=mw.ustring.match(nazwa_parametru,"^"..podstawa_parametru.."%s(%d+)$") if(liczba_z_parametru)then local liczba=tonumber(liczba_z_parametru) or (czy_od_zera and 0 or 1); liczba=(liczba>0)and liczba or (czy_od_zera and 0 or 1); liczba_maksimum=math.max(liczba_maksimum,liczba); if(not liczba_minimum)then liczba_minimum=liczba; else liczba_minimum=math.min(liczba_minimum,liczba); end; elseif(podstawa_parametru==nazwa_parametru)then liczba_maksimum=math.max(liczba_maksimum,(czy_od_zera and 0 or 1)); if(not liczba_minimum)then liczba_minimum=czy_od_zera and 0 or 1; else liczba_minimum=math.min(liczba_minimum,czy_od_zera and 0 or 1); end; end; end; if(not liczba_minimum)then liczba_minimum=1;end; return liczba_minimum,liczba_maksimum; end; p["CzySąParametryNumerowaneSzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNumerowaneTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyNumerowaneTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in ipairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; return false; end; p["CzySąParametryNienazwaneSzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNienazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyNienazwaneTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; end; return false; end; p["CzySąParametryNazwaneSzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyNazwaneTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in pairs(tabela)do if(type(_1)~="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; end; return false; end; p["CzySąParametrySzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in pairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; return false; end; p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame) local parametry_modul=require("Module:Parametry"); local czy_jest_taki_element=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_jest_taki_element)then return "tak";end; end; p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local i=1; local czy=false; for _1,_2 in pairs(args)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then if(_1==1)then czy=true;end; if(i>1)then return false; else i=i+1; end; end; end; end; if((czy)or(i==1))then return true;end; return false; end; p["KopiujTabelęŁańcuchów"]=function(args) local args2={}; local wzor_temp=args["wzór"];local wzor_wszystko=args["wzór wszystko"]; local podstawienie_temp=args.podstawienie;local podstawienie_wszystko=args["podstawienie wszystko"]; local wzor2_temp=args["wzór 2"];local wzor_wszystko_2=args["wzór wszystko 2"]; local przedrostek_temp=args.przedrostek;local przedrostek_wszystko=args["przedrostek wszystko"]; local przyrostek_temp=args.przyrostek;local przyrostek_wszystko=args["przyrostek wszystko"]; for name,value in pairs(args.tabela)do local wzor=wzor_temp and wzor_temp[name] or wzor_wszystko; local podstawienie=wzor and (podstawienie_temp and podstawienie_temp[name] or podstawienie_wszystko) or nil; if(wzor and podstawienie)then value=mw.ustring.gsub(value,wzor,podstawienie);end; local wzor2=wzor2_temp and wzor2_temp[name] or wzor_wszystko_2; if(wzor2)then value=mw.ustring.match(value,wzor2);end; if(value)then local przedrostek=przedrostek_temp and przedrostek_temp[name] or przedrostek_wszystko; local przyrostek=przyrostek_temp and przyrostek_temp[name] or przyrostek_wszystko; args2[name]=(przedrostek or '')..value..(przyrostek or ''); end; end; return args2; end; p["KopiujTabelęElementów"]=function(tabelka,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci) local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy); local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci); local tabelka2={}; for name,value in pairs(tabelka)do if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then tabelka2[name]=value; end; end; return tabelka2; end; p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci) local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy); local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci); local tabelka3={}; for name,value in pairs(tabelka)do if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then local czy=p.CzyJestTakiKluczTabeli(tabelka2,name); if(not czy)then tabelka3[name]=value; end; end; end; return tabelka3; end; p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci,__funkcja) local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy); local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci); local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local szablonowe_modul=require("Module:Szablonowe"); local kopiuj_metatable=function(value,funkcja,funkcja2) local __metatabelka=getmetatable(value); if(__metatabelka)then if(__metatabelka.KopiujMetaTabela)then __metatabelka.KopiujMetaTabela(value,funkcja,funkcja2) else funkcja(value,true); end; else funkcja(value,true); end; end; local function kopiuj(tabelka,tabelka_nowa) local tabelka2=tabelka_nowa or {}; for name,value in pairs(tabelka)do if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then if(type(value)=="table")then kopiuj_metatable(value,function(value,jak) value=__funkcja and __funkcja(value,type(value),jak) or value; if(jak)then tabelka2[name]=kopiuj(value); else tabelka2[name]=value; end; end,kopiuj); else value=__funkcja and __funkcja(value,type(value)) or value; tabelka2[name]=value; end; end; end; return tabelka2; end; local tabela_kopiuj={}; kopiuj_metatable(tabelka,function(value,jak) if(jak)then tabela_kopiuj=kopiuj(value); else tabela_kopiuj=value; end; end,kopiuj); return tabela_kopiuj; end; p["NazwanyLiczbą"] = function(frame) local pf=frame:getParent() local numer_parametru=frame.args[1] if(numer_parametru)then numer_parametru=tonumber(numer_parametru); if(numer_parametru and pf.args[numer_parametru])then return "tak" end end; return; end p["NazwanyCiągiem"] = function (frame) local pf=frame:getParent() local klucz_parametru=frame.args[1] if(klucz_parametru)then local klucz_parametru_do_liczby=tonumber(klucz_parametru); if((not klucz_parametru_do_liczby)and(pf.args[klucz_parametru]))then return "tak" end end; return; end; function p.Nazwane(frame) local pf = frame:getParent() for _, nazwa_parametru in ipairs(frame.args)do local wartosc_parametru_nazwanego=pf.args[mw.text.trim(nazwa_parametru)] if(wartosc_parametru_nazwanego)then return "tak" end end return; end function p.Nienazwane(frame) local pf = frame:getParent() for _, wartosc_parametru in ipairs(frame.args)do wartosc_parametru=mw.text.trim(wartosc_parametru) for name, wartosc_parametru2 in pairs(pf.args) do if(type(name)=="number")then if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then return "tak" end end; end end return; end function p.Numerowane(frame) local pf = frame:getParent() for _, wartosc_parametru in ipairs(frame.args)do wartosc_parametru=mw.text.trim(wartosc_parametru) for _, wartosc_parametru2 in ipairs(pf.args) do if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then return "tak" end end end return; end p["Odstępy"] = function(frame) local PobierzParametr=p.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local czy=PobierzParametr(2) or PobierzParametr("wewnątrz"); local dolny_myslnik=PobierzParametr(3) or PobierzParametr("dolny-myślnik"); local odstep_spacje=PobierzParametr(4) or PobierzParametr("spacje"); if(not p.CzyTak(nazwa))then return nazwa;end; local m_=(p.CzyTak(odstep_spacje) and "" or "_"); nazwa=mw.ustring.gsub(nazwa,"^[%s"..m_.."]+",""); nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+$","") if(p.CzyTak(czy))then nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+",(p.CzyTak(dolny_myslnik) and "_" or " ")); end; return nazwa; end; function p.DodajElementDoZbioru(tabela,wartosc) if(wartosc==nil)then return; end; if(type(tabela)~="table")then return;end; for _,element_tabeli in pairs(tabela)do if(element_tabeli==wartosc)then return false; end; end; table.insert(tabela,wartosc); return true; end; function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc) if(wartosc==nil)then return;end; if(type(tabela)~="table")then return;end; for _, element_tabeli in ipairs(tabela)do if(element_tabeli==wartosc)then return true; end; end; return false; end; function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc) if(wartosc==nil)then return;end; if(type(tabela)~="table")then return;end; for name,value in pairs(tabela)do if(type(name)=="number")then if(value==wartosc)then return true; end; end; end; return false; end; function p.CzyJestTakiKluczTabeli(tabela,klucz) if(klucz==nil)then return;end; if(type(tabela)~="table")then return;end; local wartosc=tabela[klucz]; if(wartosc~=nil)then return true;end; return false; end; function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc) if((klucz==nil)or(wartosc==nil))then return;end; if(type(tabela)~="table")then return;end; for __klucz, __wartosc in pairs(tabela)do if((__klucz==klucz)and(__wartosc==wartosc))then return true; end; end; return false; end; p["ŁączDwieTabele"] = function (tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka2 and parametry_modul["CzySąElementyTablicy"](tabelka2)) and ((tabelka1 and parametry_modul["CzySąElementyTablicy"](tabelka1)) and parametry_modul["ŁączNumerowaneTabele"]{[1]=tabelka1,[2]=tabelka2,} or tabelka2) or tabelka1; end; p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka1 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2; end; p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka1 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2; end; p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka1 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2; end; 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; 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; 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; 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; 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; 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; 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; 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; p["ŁączTabele"] = function(args,args2) local tabela={}; local par1=(args2.CzyPairsTablic)and pairs or ipairs; local czy_number_nie_tylko_tablic=(not args2.CzyPairsTablic)and true or false; local par2=(args2["CzyPairsElementówTablic"])and pairs or ipairs; local czy_number_nie_tylko_elementow_tablic=(not args2["CzyPairsElementówTablic"])and true or false; local czy_nazwane=(args2.CzyNazwaneElementyTabel)and true or false; local czy_nie_tylko_nazwane=(not args2.CzyTylkoNazwaneElementyTabel)and true or false; local nazwij_elementy_numerowane=(args2.NazwijElementyNumerowane) and true or false; for licznik, args_tabeli in par1(args)do if(((czy_number_nie_tylko_tablic)or(type(licznik)=="number"))and(type(args_tabeli)=="table"))then for name,value in par2(args_tabeli)do if((czy_nie_tylko_nazwane)and((czy_number_nie_tylko_elementow_tablic)or(type(name)=="number")))then if(nazwij_elementy_numerowane)then if(not tabela[name])then tabela[name]=value;end; else table.insert(tabela,value); end; elseif((czy_nazwane)and(czy_nie_tylko_nazwane or ((not czy_nie_tylko_nazwane)and(type(name)~="number"))))then if(not tabela[name])then tabela[name]=value;end; end; end; end; end; return tabela; end; p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2) if(not tabelka_1)then return nil;end; if(not tabelka_2)then return tabelka_1;end; for name,_ in pairs(tabelka_1)do if(tabelka_2[name]~=nil)then tabelka_1[name]=nil; end; end; return tabelka_1; end; p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args) local tabela_poczatkowa=args[1]; local tabela={}; local lens=#args; for name,value in pairs(tabela_poczatkowa)do local yes=false; for i=2,lens,1 do if(args[i][name]~=nil)then yes=true; break; end; end; if(not yes)then tabela[name]=value; end; end; return tabela; end; function p.TypeTable(zmienna) return (type(zmienna)=="table"); end; function p.TypeFunction(zmienna) return (type(zmienna)=="function"); end; function p.TypeString(zmienna) return (type(zmienna)=="string"); end; function p.TypeBoolean(zmienna) return (type(zmienna)=="boolean"); end; function p.TypeNumber(zmienna) return (type(zmienna)=="number"); end; function p.TypeNil(zmienna) return (zmienna==nil); end; local function CzyTakSilnik(args,funkcja) local parametr=p.CzyTak(args[2]) and require("Module:"..args[2])[args[1]] or args[1]; local argsfun; if(p.CzyTak(args[2]))then for name,value in pairs(args)do local typen=(type(name)=="number"); if(((typen)and((name~=1)and(name~=2)))or(not typen))then if(not argsfun)then argsfun={};end; argsfun[(typen and name>2) and (name-2) or name]=value; end; end; else parametr=tonumber(parametr) or parametr; if(type(parametr)=="string")then local parametr2=p["Odstępy"](parametr); if(parametr2=="true")then parametr=true; elseif(parametr2=="false")then parametr=false; elseif(parametr2=="nil")then parametr=nil; else parametr=tonumber(parametr2) or parametr; end; end; end; return (p[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; end; p["CzyTakCiąg"]=function(...) local frame_parametry={...}; local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1]; local czy_table=p.TypeTable(frame); if((czy_table and (not frame.getParent)) or (not czy_table))then local PobierzParametr=p.PobierzParametr(frame); local ciag=PobierzParametr("ciąg") or PobierzParametr(1); local parametry=PobierzParametr("parametry") or PobierzParametr(2); if(not p.TypeNil(ciag))then if(p.TypeString(ciag))then return (not mw.ustring.match(ciag,"^([_%s]*)$")) and "tak" or nil; end; else return nil; end; return p.CzyTak{[1]=ciag,[2]=parametry,}; else local args=p.PobierzArgsParametry(frame); return CzyTakSilnik(args,"CzyTakCiąg"); end; end; function p.CzyTak(...) local frame_parametry={...}; local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1]; local czy_table=p.TypeTable(frame); if((czy_table and (not frame.getParent)) or (not czy_table))then local PobierzParametr=p.PobierzParametr(frame); local zmienna;local parametry; if(czy_table)then local zmienna_temp=PobierzParametr("zmienna") or PobierzParametr(1); zmienna=zmienna_temp or frame; parametry=zmienna_temp and (PobierzParametr("parametry") or PobierzParametr(2)) or nil; else zmienna=frame; parametry=nil; end; if(not p.TypeNil(zmienna))then if(p.TypeString(zmienna))then if(zmienna~="")then return "tak"; else return nil; end; elseif(p.TypeNumber(zmienna))then if(zmienna~=0)then return "tak"; else return nil; end; elseif(p.TypeBoolean(zmienna))then return (zmienna and "tak" or nil); elseif(p.TypeTable(zmienna))then return (p["CzySąElementyTablicy"](zmienna) and "tak" or nil); elseif(p.TypeFunction(zmienna))then return (zmienna(parametry) and "tak" or nil); else return nil; end; else return nil; end; else local args=p.PobierzArgsParametry(frame); return CzyTakSilnik(args,"CzyTak"); end; end; function p.PobierzFrameEwentualnieParent(frame) return (frame.getParent and (p.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame); end; function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica) local TempFunc=function(frame) local pf=p.PobierzFrameEwentualnieParent(frame); local args=pf.args; if(p.TypeTable(args))then return args; else return nil; end; end; if(not p.TypeNil(frame))then return p.TypeTable(frame) and (TempFunc(frame) or frame) or ((czy_nie_tablica_jako_tablica)and {frame,} or frame); else return {}; end; end; function p.PobierzParametryRamki(frame) local TempFun1=function(tablica) return function(nazwa) return tablica[nazwa]; end; end; local TempFun2=function(wartosc) local tak=true; return function(nazwa) if(tak)then tak=false; return wartosc; end; return nil; end; end; local tablica_parametrow_ramki=p.TypeTable(frame) and (p.TypeTable(frame.args) and TempFun1(frame.args) or TempFun1(frame)) or TempFun2(frame); return function(nazwa) return tablica_parametrow_ramki(nazwa); end; end; function p.PobierzElementNumerowanyZFrameLubTablicy(frame) local tablica_parametrow_funkcji=p.TypeTable(frame[1]) and p.TypeTable(frame[1].args)and frame[1].args or frame; return function(nazwa) local wartosc=tablica_parametrow_funkcji[nazwa]; return wartosc; end; end; function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) local __pobierz_parametr_table_args=nil; if(not p.TypeNil(frame))then if(p.TypeTable(frame))then local tak_frame_lub_parent=p.CzyTak(czy_frame_lub_parent); if((not tak_frame_lub_parent)or(not frame.getParent))then local __pobierz_parametr_table_args_temp=p.CzyTak(czy_frame) and frame.args or p.PobierzArgsParametry(frame); __pobierz_parametr_table_args=function(nazwa) return __pobierz_parametr_table_args_temp[nazwa or 1],1; end; elseif(tak_frame_lub_parent)then local pf=(frame.getParent)and frame:getParent() or nil; __pobierz_parametr_table_args=function(nazwa) local wartosc=frame.args[nazwa or 1] or (pf and pf.args[nazwa or 1] or nil); return wartosc,2; end; end; else local tak=true; __pobierz_parametr_table_args=function(nazwa) if(tak)then tak=false; return frame,0; end; return nil,0; end; end; else __pobierz_parametr_table_args=function(nazwa) return nil,0; end; end; return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; function p.And(frame) local czy="tak"; local parametry_modul=require("Module:Parametry"); local wartosc_uzyskana=nil; for _,wartosc in ipairs(frame.args)do czy=czy and parametry_modul["CzyTakCiąg"](wartosc); if(not czy)then return nil;end; wartosc_uzyskana=wartosc; end; return czy and wartosc_uzyskana or nil; end; function p.Or(frame) local czy=nil; for _,wartosc in ipairs(frame.args)do czy=czy or p["CzyTakCiąg"](wartosc); if(czy)then return wartosc;end; end; return nil; end; function p.Not(frame) local parametry_modul=require("Module:Parametry"); return (not parametry_modul["CzyTakCiąg"](frame.args[1]))and "tak" or nil; end; function p.Mniejszy(frame) local wyraz1=tonumber(frame.args[1]) or 0; local wyraz2=tonumber(frame.args[2]) or 0; if(wyraz1<wyraz2)then return "tak"; end; return; end; function p.IlePodano(frame) local args=frame.args; local args2=frame:getParent().args; local licznik=0; for _,name in pairs(args)do if(args2[name])then licznik=licznik+1; end; end; return licznik; end; p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter={}; function p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz) local html_modul=require("Module:Html"); klucz=html_modul.DecodeKoduHTMLZnaku(klucz); klucz=p["Odstępy"]{[1]=klucz,[2]="tak",}; klucz=mw.ustring.lower(klucz); return rawget(t,klucz); end; function p.IteratorPoNumerowanychElementachTablicy(t) local i=1; return function() local v=t[i]; if(v~=nil)then i=i+1;end; return v; end; end; p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=function(tabela,czy_number,funkcja) local keys={}; for name,_ in next,tabela do if((not czy_number)or((czy_number)and(p.TypeNumber(name))))then table.insert(keys,name); end; end; table.sort(keys, funkcja or ((czy_number) and function(a,b) return (a<b); end or nil ) ); return function(tablica,klucz) if(klucz==nil)then local klucz=keys[1]; return klucz,tablica[klucz]; end; for k,_ in ipairs(keys)do if(keys[k]==klucz)then local klucz=keys[k+1]; return klucz,tablica[klucz]; end; end; end; end; function p.Max(...) local frame={...}; local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame); local parametr1=tonumber(PobierzElement(1)); local parametr2=tonumber(PobierzElement(2)); return math.max(parametr1,parametr2); end; function p.Min(...) local frame={...}; local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame); local parametr1=tonumber(PobierzElement(1)); local parametr2=tonumber(PobierzElement(2)); return math.min(parametr1,parametr2); end; return p; 1nv7hxs6o069wwroh40omjnqorftbsx Szablon:Szablony linków wewnątrz- i między-serwisowych 10 51872 560390 550356 2026-11-01T10:01:15Z Persino 2851 560390 wikitext text/x-wiki {{Navbox ze zwijanymi grupami | nazwa = Szablony linków wewnątrz- i między-serwisowych | zwijanie = rozwinięte | tytuł = Szablony linków do obiektów, stron i indeksowanych punktów w niej | opis1 = | spis1 = {{Navbox | tytuł = Szablony linków oparte o linki wewnętrzne lub z opcją odwołania się do serwisów zewnętrznych | zwijanie = {{#switch:{{ROOTPAGENAME}}|LinkUstęp|LinkGłównaUstęp|LinkWikijuniorUstęp|LinkSzablonUstęp|LinkModułUstęp|LinkPomocUstęp|LinkProjektUstęp|LinkKategoriaUstęp|LinkUżytkownikUstęp|LinkSpecjalnaUstęp|LinkPediaGłównaUstęp|LinkPediaSzablonUstęp|LinkPediaPomocUstęp|LinkPediaProjektUstęp|LinkOgólne|LinkOgólne2|Link wewnętrzny|Sekcja referencyjna|LinkURL|LinkGłówna|LinkWikijunior|LinkKategoria|LinkPlik|LinkSzablon|LinkProjekt|LinkWB|LinkUżytkownik|LinkPomoc|LinkModuł|LinkKomunikat|LinkSpecjalna|LinkWikijunior2|LinkKategoria2|LinkPlik2|LinkSzablon2|LinkProjekt2|LinkUżytkownik2|LinkPomoc2|LinkModuł2|LinkKomunikat2|LinkSpecjalna2|LinkPediaGłówna|LinkSłownikGłówna|LinkCytatyGłówna|LinkŹródłaGłówna|LinkPodróżeGłówna|LinkNewsGłówna|LinkWersytetGłówna|LinkPediaPomoc|LinkPediaProjekt|LinkPediaKategoria|LinkŹródłaKategoria|LinkŹródłaProjekt|LinkCytatyProjekt|LinkNewsProjekt|LinkSłownikProjekt|LinkPodróżeProjekt|LinkPediaWikiprojekt|LinkPediaPortal|LinkEnPediaGłówna|LinkEnGłówna|LinkEnWikijunior|LinkEnKategoria|LinkEnProjekt|LinkMediaWikiGłówna|LinkMetaWikiGłówna|LinkCommonsGłówna|LinkSpeciesGłówna|LinkDaneGłówna|LinkWikiaGłówna|LinkSpeciesProjekt|LinkCommonsProjekt|LinkDaneProjekt|LinkCommonsKategoria|LinkMetaWikiPomoc|LinkMetaWikiProjekt|LinkMetaWikiSpecjalna|LinkMediaWikiPomoc|LinkMediaWikiExtension|LinkDaneProperty|LinkPediaPomoc2|LinkPediaProjekt2|LinkPediaKategoria2|LinkŹródłaKategoria2|LinkŹródłaProjekt2|LinkPediaWikiprojekt2|LinkPediaPortal2|LinkCommonsKategoria2|LinkMetaWikiPomoc2|LinkMediaWikiPomoc2|LinkMetaWikiProjekt2=rozwinięte|#default=zwinięte}} | zależnie = <includeonly>tak</includeonly> | podgrupa | opis1 = Szablony do ustępu (rozdziału) | spis1 = {{nowrap|{{s|LinkUstęp}} (kombajn)}}{{•}} {{s|LinkGłównaUstęp}}{{•}} {{s|LinkWikijuniorUstęp}}{{•}} {{s|LinkSzablonUstęp}}{{•}} {{s|LinkModułUstęp}}{{•}} {{s|LinkPomocUstęp}}{{•}} {{s|LinkProjektUstęp}}{{•}} {{s|LinkKategoriaUstęp}}{{•}} {{s|LinkUżytkownikUstęp}}{{•}} {{s|LinkSpecjalnaUstęp}}{{•}} {{s|LinkPediaGłównaUstęp}}{{•}} {{s|LinkPediaSzablonUstęp}}{{•}} {{s|LinkPediaPomocUstęp}}{{•}} {{s|LinkPediaProjektUstęp}} | opis2 = Szablony linków ogólne | spis2 = {{s|LinkOgólne}}{{•}} {{s|LinkOgólne2}}{{•}} {{s|Link wewnętrzny}}{{•}} {{s|Sekcja referencyjna}}{{•}} {{s|LinkURL}} | opis3 = | spis3 = {{Navbox | tytuł = Szablony do projektu bieżącego będącymi linkami wewnętrznymi szczególnymi | zwijanie = {{#switch:{{ROOTPAGENAME}}|LinkGłówna|LinkWikijunior|LinkKategoria|LinkPlik|LinkSzablon|LinkProjekt|LinkWB|LinkUżytkownik|LinkPomoc|LinkModuł|LinkKomunikat|LinkSpecjalna|LinkWikijunior2|LinkKategoria2|LinkPlik2|LinkSzablon2|LinkProjekt2|LinkUżytkownik2|LinkPomoc2|LinkModuł2|LinkKomunikat2|LinkSpecjalna2=rozwinięte|#default=zwinięte}} | zależnie = <includeonly>tak</includeonly> | podgrupa | opis1 = bez przestrzeni nazw | spis1 = {{s|LinkGłówna}}{{•}} {{s|LinkWikijunior}}{{•}} {{s|LinkKategoria}}{{•}} {{s|LinkPlik}}{{•}} {{s|LinkSzablon}}{{•}} {{s|LinkProjekt}}{{•}} {{s|LinkUżytkownik}}{{•}} {{s|LinkPomoc}}{{•}} {{s|LinkModuł}}{{•}} {{s|LinkKomunikat}}{{•}} {{s|LinkSpecjalna}} | opis2 = z przestrzenią nazw | spis2 = {{s|LinkWikijunior2}}{{•}} {{s|LinkKategoria2}}{{•}} {{s|LinkPlik2}}{{•}} {{s|LinkSzablon2}}{{•}} {{s|LinkProjekt2}}{{•}} {{s|LinkWB}}{{•}} {{s|LinkUżytkownik2}}{{•}} {{s|LinkPomoc2}}{{•}} {{s|LinkModuł2}}{{•}} {{s|LinkKomunikat2}}{{•}} {{s|LinkSpecjalna2}} | kategoria = nie }} | opis4 = | spis4 = {{Navbox | tytuł = Szablony do projektu niebieżącego | zwijanie = {{#switch:{{ROOTPAGENAME}}|LinkPediaGłówna|LinkSłownikGłówna|LinkCytatyGłówna|LinkŹródłaGłówna|LinkPodróżeGłówna|LinkNewsGłówna|LinkWersytetGłówna|LinkPediaPomoc|LinkPediaProjekt|LinkPediaKategoria|LinkŹródłaProjekt|LinkCytatyProjekt|LinkNewsProjekt|LinkSłownikProjekt|LinkPodróżeProjekt|LinkPediaWikiprojekt|LinkPediaPortal|LinkEnPediaGłówna|LinkEnGłówna|LinkEnWikijunior|LinkEnKategoria|LinkEnProjekt|LinkMediaWikiGłówna|LinkMetaWikiGłówna|LinkCommonsGłówna|LinkSpeciesGłówna|LinkDaneGłówna|LinkWikiaGłówna|LinkSpeciesProjekt|LinkCommonsProjekt|LinkDaneProjekt|LinkCommonsKategoria|LinkMetaWikiPomoc|LinkMetaWikiProjekt|LinkMetaWikiSpecjalna|LinkMediaWikiPomoc|LinkMediaWikiExtension|LinkPediaPomoc2|LinkPediaProjekt2|LinkPediaKategoria2|LinkŹródłaProjekt2|LinkPediaWikiprojekt2|LinkPediaPortal2|LinkCommonsKategoria2|LinkMetaWikiPomoc2|LinkMediaWikiPomoc2|LinkMetaWikiProjekt2|LinkMediaWikiExtension2=rozwinięte|#default=zwinięte}} | zależnie = <includeonly>tak</includeonly> | podgrupa | opis1 = językowe sp. bez przestrzeni nazw | spis1 = {{s|LinkPediaGłówna}}{{•}} {{s|LinkSłownikGłówna}}{{•}} {{s|LinkCytatyGłówna}}{{•}} {{s|LinkŹródłaGłówna}}{{•}} {{s|LinkPodróżeGłówna}}{{•}} {{s|LinkNewsGłówna}}{{•}} {{s|LinkWersytetGłówna}}{{•}} {{s|LinkDaneGłówna}}{{•}} {{s|LinkWikiaGłówna}}{{•}} {{s|LinkPediaPomoc}}{{•}} {{s|LinkPediaProjekt}}{{•}} {{s|LinkPediaKategoria}}{{•}} {{s|LinkŹródłaKategoria}}{{•}} {{s|LinkŹródłaProjekt}}{{•}} {{s|LinkCytatyProjekt}}{{•}} {{s|LinkNewsProjekt}}{{•}} {{s|LinkSłownikProjekt}}{{•}} {{s|LinkPodróżeProjekt}}{{•}} {{s|LinkPediaWikiprojekt}}{{•}} {{s|LinkPediaPortal}} | opis2 = językowe sp. z przestrzenią nazw | spis2 = {{s|LinkPediaPomoc2}}{{•}} {{s|LinkPediaProjekt2}}{{•}} {{s|LinkPediaKategoria2}}{{•}} {{s|LinkŹródłaKategoria2}}{{•}} {{s|LinkŹródłaProjekt2}}{{•}} {{s|LinkPediaWikiprojekt2}}{{•}} {{s|LinkPediaPortal2}} | opis3 = w. ang. sp. bez przestrzeni nazw | spis3 = {{s|LinkEnPediaGłówna}}{{•}} {{s|LinkEnGłówna}}{{•}} {{s|LinkEnWikijunior}}{{•}} {{s|LinkEnKategoria}}{{•}} {{s|LinkEnProjekt}} | opis4 = angielskie, sp. bez przestrzeni nazw | spis4 = {{s|LinkMediaWikiGłówna}}{{•}} {{s|LinkMetaWikiGłówna}}{{•}} {{s|LinkCommonsGłówna}}{{•}} {{s|LinkSpeciesGłówna}}{{•}} {{s|LinkSpeciesProjekt}}{{•}} {{s|LinkCommonsProjekt}}{{•}} {{s|LinkDaneProjekt}}{{•}} {{s|LinkCommonsKategoria}}{{•}} {{s|LinkMetaWikiPomoc}}{{•}} {{s|LinkMetaWikiProjekt}}{{•}} {{s|LinkMetaWikiSpecjalna}}{{•}} {{s|LinkMediaWikiPomoc}}{{•}} {{s|LinkMediaWikiExtension}}{{•}} {{s|LinkDaneProperty}} | opis5 = angielskie, sp. z przestrzenią nazw | spis5 = {{s|LinkCommonsKategoria2}}{{•}} {{s|LinkMetaWikiPomoc2}}{{•}} {{s|LinkMediaWikiPomoc2}}{{•}} {{s|LinkMetaWikiProjekt2}}}{{•}} {{s|LinkMediaWikiExtension2}} | kategoria = nie }} | kategoria = nie }} | opis2 = | spis2 = {{Navbox | tytuł = Szablony manewrujące na linkach wewnętrznych i zewnętrznych | zwijanie = {{#switch:{{ROOTPAGENAME}}|WydobądźLinki=rozwinięte|#default=zwinięte}} | zależnie = <includeonly>tak</includeonly> | podgrupa | opis1 = Szablony operujące tekstem z linkami | spis1 = {{s|WydobądźLinki}} | kategoria = nie }} | opis3 = | spis3 = {{Navbox | tytuł = Szablony linków matematyczne | zwijanie = {{#switch:{{ROOTPAGENAME}}|LinkObiekt|LinkWzór|LinkRysunek|LinkZobaczTeż|LinkPatrz|LinkTwierdzenie|LinkHipoteza|LinkLemat|LinkKryterium|LinkDowód|LinkPostulat|LinkPostulaty|LinkOkreślenie|LinkZadanie|LinkPraktyka|LinkProcedura|LinkSchemat|LinkTbl|LinkŚródtytuł|LinkŚródtytułTutaj=rozwinięte|#default=zwinięte}} | zależnie = <includeonly>tak</includeonly> | podgrupa | opis1 = Szablony stronicowe ogólne (kombajny) | spis1 = {{s|LinkObiekt}} | opis2 = Szablony stronicowe szczególne | spis2 = {{s|LinkWzór}}{{•}} {{s|LinkRysunek}} | opis3 = Szablony linków do oznaczonych punktów | spis3 = {{s|LinkZobaczTeż}}{{•}} {{s|LinkPatrz}} | opis4 = Szablony linków do wypowiedzi | spis4 = {{s|LinkTwierdzenie}}{{•}} {{s|LinkHipoteza}}{{•}} {{s|LinkLemat}}{{•}} {{s|LinkKryterium}}{{•}} {{s|LinkDowód}}{{•}} {{s|LinkPostulat}}{{•}} {{s|LinkPostulaty}}{{•}} {{s|LinkOkreślenie}}{{•}} {{s|LinkZadanie}}{{•}} {{s|LinkPraktyka}}{{•}} {{s|LinkProcedura}}{{•}} {{s|LinkSchemat}}{{•}} {{s|LinkTbl}} | opis5 = Szablony odwołań do nagłówków rozdziałów | spis5 = {{s|LinkŚródtytuł}}{{•}} {{s|LinkŚródtytułTutaj}} | kategoria = nie }} | opis4 = | spis4 = {{Navbox | tytuł = Szablony linków do innego artykułu | zwijanie = {{#switch:{{ROOTPAGENAME}}|Osobny artykuł|Zobacz głównie|Zobacz też|Główny artykuł|Link zewnętrzny|Zobacz sekcję|Kategoria główna|Zobacz kategorię|Spójrz też=rozwinięte|#default=zwinięte}} | zależnie = <includeonly>tak</includeonly> | podgrupa | opis1 = Szablony sekcji | spis1 = {{s|Osobny artykuł}}{{•}} {{s|Zobacz głównie}}{{•}} {{s|Zobacz też}}{{•}} {{s|Główny artykuł}}{{•}} {{s|Link zewnętrzny}}{{•}} {{s|Zobacz sekcję}}{{•}} {{s|Kategoria główna}}{{•}} {{s|Zobacz kategorię}} | opis2 = Szablony sekcji Wikiźródeł | spis2 = {{s|Spójrz też}} | kategoria = nie }} | opis5 = | spis5 = {{Navbox | tytuł = Szablony linków techniczne | zwijanie = {{#switch:{{ROOTPAGENAME}}|Skrót|Skrót szablonu=rozwinięte|#default=zwinięte}} | zależnie = <includeonly>tak</includeonly> | podgrupa | opis1 = Szablony skrótów | spis1 = {{s|Skrót}}{{•}} {{s|Skrót szablonu}} | kategoria = nie }} | dół = Szablon nawigacyjny zbiera zbiory linków linkowania do obiektów szablonów stronicowych, i szablony linków do różnych przestrzeni nazw, stron i punktów w nich, zbudowanych w oparciu o normalne linki wewnętrzne. | kategoria = Wikibooks }} km8skp86ec8syxqcadapq2van81qirt Wikipedysta:Persino/brudnopis3 2 58870 560371 529695 2026-11-01T09:00:57Z Persino 2851 560371 wikitext text/x-wiki {{Plik|plik=Census-reading-hi.jpgs|ramka=mały|pozycja=prawo|rozmiar=225px|opis=Wikijunior – tworzymy książki dla dzieci}} {{Śródtytuł|uchwyt3}} =={{Śródtytuł|uchwyt{{!}}}} {{Śródtytuł|uchwyt2}}{{s|tytan}}tytan== {{LinkŚródtytuł|uchwyt{{!}}}}{{LinkŚródtytuł|uchwyt2}} {{Nowiki|{{Sekcja referencyjna|strona=Zaczynamy/Zbiory|pod-ustęp=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Matematyka dla liceum/Matematyka dla liceum}}}} {{LinkOgólne| _ _ _ |repozytorium Commons|klucz projektu=Commons|analiza=tak}} {{LinkOgólne|de:b:w:n:b:Spis treści#tytan}}{{LinkOgólne|de:b:w:n:b:Spis treści}} ---- {{Link wewnętrzny|strona=de:b:w:n:b:Spis treści#tytan}}{{Link wewnętrzny|strona=de:b:w:n:b:Spis treści}} ---- {{LinkOgólne|_#tytan|klucz projektu=w}} {{Link wewnętrzny|strona=_#tytan|klucz projektu=w}} ---- {{LinkProjekt|_|kod projektu=w}} {{Link wewnętrzny|strona=Project:_|kod projektu=w}} ----- {{Nowiki|{{LinkURL|strona=http://species.wikimedia.org/w/index.php?title=Archaea|nazwa=Gatunek bakterii Archaea}}}} ---- Następny: {{NastępnyArtykuł|0|nagłówek=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pszczelarstwo/Biologia/Głowa}} Poprzedni: {{PoprzedniArtykuł|0|nagłówek=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pszczelarstwo/Biologia/Głowa}} ---- Spis ---- Następny: {{NastępnyArtykuł|0|spis=Biologia|nagłówek=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pszczelarstwo/Biologia/Głowa}} Poprzedni: {{PoprzedniArtykuł|0|spis=Biologia2|nagłówek=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pszczelarstwo/Biologia/Głowa}} ---- Następny: {{NastępnyArtykuł|0|spis=Biologia|nagłówek=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pszczelarstwo/Biologia/Ewolucja}} Poprzedni: {{PoprzedniArtykuł|0|spis=Biologia|nagłówek=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pszczelarstwo/Biologia/Ewolucja}} ---- {{#invoke:StronicowyParser|SpisyTreści|json=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pszczelarstwo/Ekonomia|wyspecjalizowana=tak}} {{PoprzedniArtykuł|książka=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Sieci:Linux/dig}} {{NastępnyArtykuł|książka=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Sieci:Linux/nmap}} {{OstatniArtykuł|książka=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Sieci:Linux/nmap}} {{PierwszyArtykuł|książka=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Sieci:Linux/nmap}} {{Nowiki|{{LiniaArtykułuKsiążki|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia_powszechna/Źródła_historyczne|analiza=tak}}}} ---- {{#invoke:StronicowyParser|AktualnaKsiążkaArtykułu|nazwa przestrzeni nazw=(main)|nazwa jednostki=Sieci:Linux/nmap|wyspecjalizowana=tak}} {{Tbl|uchwyt=tytan|tekst=<syntaxhighlight lang="lua"> p.napisy_wprowadzenia_tekstu_przypisowych={ ["Przypisy"]=true, ["Uwagi"]=true, ["Bibliografia"]=true, ["Licencja"]=true, }; </syntaxhighlight>}} hkkjxrv2ozddx851vd4ncl7mz9993qp Moduł:Szablonowe 828 58954 560351 558610 2026-10-31T12:46:09Z Persino 2851 560351 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or p.TablicaBazyKodowaniaArtykularnegoParsowaniaTekstu(self,nazwa_modulu); local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) return szablon; end, funkcja1,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end,__funkcja2,funkcja3); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.TablicaBazyKodowaniaArtykularnegoParsowaniaTekstu(self,nazwa_modulu) local tablica_modulu_bazowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_bazowe.tablica_analizy_obiektow_strony_dany_modul=tablica_modulu_bazowe.tablica_analizy_obiektow_strony_dany_modul or {}; local tablica_bazowe=tablica_modulu_bazowe.tablica_analizy_obiektow_strony_dany_modul; ---- tablica_bazowe[nazwa_modulu]=tablica_bazowe[nazwa_modulu] or {}; local tablica_analizy_obiektow_strony_dany_modul=tablica_bazowe[nazwa_modulu]; return tablica_analizy_obiektow_strony_dany_modul; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or p.TablicaBazyKodowaniaArtykularnegoParsowaniaTekstu(self,nazwa_modulu); --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,czy_ustalanie_szybkie_nazwy,__FUNKCJA,__FUNKCJA2) local czy_kody_w_nazwa; if(czy_ustalanie_szybkie_nazwy)then czy_kody_w_nazwa=mw.ustring.match(nazwa,p.NormaWzoruKodowaniaTekstu()); if(not czy_kody_w_nazwa)then local czy_jest_dwukropek=mw.ustring.match(nazwa,"[%:%&%%]"); if(not czy_jest_dwukropek)then return nazwa,nil; end; end; else czy_kody_w_nazwa=true; end; local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if((__FUNKCJA)and(czy_kody_w_nazwa))then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2)and(czy_kody_w_nazwa)and(not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa,nil; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa) or nil; if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaKompletnaNazwaStrony"]=function(czy_szablon,czy_pelna) if(not czy_szablon)then return;end; if(mw.ustring.match(czy_szablon,"^[_%s%:]*$"))then return "";end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=czy_pelna and mw.ustring.match(czy_szablon,"^%s*[^:]") or nil; if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; return nazwa_szablonu; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; local nazwa_szablonu=p["SzablonowaKompletnaNazwaStrony"](czy_szablon,true); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,true,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*[%-]?[1-9]%d*%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,true,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local function __FUNKCJA2() return true; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,__FUNKCJA2,}); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local wynik=p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); end; end ,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); if(wynik)then return wynik;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; local parametry_modul=require("Module:Parametry"); local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_inna_tabelka,true); for _,value in __next,tab_inna_tabelka,nil do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tab_atrybuty); return tab_atrybuty; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,}); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa,true); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; 6ki0aqgev5to1wk26qw7xgir3u9674u 560352 560351 2026-10-31T12:51:44Z Persino 2851 560352 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_atrybutowe_znacznikowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or p.TablicaBazyKodowaniaArtykularnegoParsowaniaTekstu(self,nazwa_modulu); local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) return szablon; end, funkcja1,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end,__funkcja2,funkcja3); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.TablicaBazyKodowaniaArtykularnegoParsowaniaTekstu(self,nazwa_modulu) local tablica_modulu_bazowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_bazowe.tablica_analizy_obiektow_strony_dany_modul=tablica_modulu_bazowe.tablica_analizy_obiektow_strony_dany_modul or {}; local tablica_bazowe=tablica_modulu_bazowe.tablica_analizy_obiektow_strony_dany_modul; ---- tablica_bazowe[nazwa_modulu]=tablica_bazowe[nazwa_modulu] or {}; local tablica_analizy_obiektow_strony_dany_modul=tablica_bazowe[nazwa_modulu]; return tablica_analizy_obiektow_strony_dany_modul; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or p.TablicaBazyKodowaniaArtykularnegoParsowaniaTekstu(self,nazwa_modulu); --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,czy_ustalanie_szybkie_nazwy,__FUNKCJA,__FUNKCJA2) local czy_kody_w_nazwa; if(czy_ustalanie_szybkie_nazwy)then czy_kody_w_nazwa=mw.ustring.match(nazwa,p.NormaWzoruKodowaniaTekstu()); if(not czy_kody_w_nazwa)then local czy_jest_dwukropek=mw.ustring.match(nazwa,"[%:%&%%]"); if(not czy_jest_dwukropek)then return nazwa,nil; end; end; else czy_kody_w_nazwa=true; end; local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if((__FUNKCJA)and(czy_kody_w_nazwa))then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2)and(czy_kody_w_nazwa)and(not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa,nil; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa) or nil; if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaKompletnaNazwaStrony"]=function(czy_szablon,czy_pelna) if(not czy_szablon)then return;end; if(mw.ustring.match(czy_szablon,"^[_%s%:]*$"))then return "";end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=czy_pelna and mw.ustring.match(czy_szablon,"^%s*[^:]") or nil; if(czy_nie_dwukropek)then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; return nazwa_szablonu; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; local nazwa_szablonu=p["SzablonowaKompletnaNazwaStrony"](czy_szablon,true); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,true,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*[%-]?[1-9]%d*%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,true,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local function __FUNKCJA2() return true; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,__FUNKCJA2,}); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local wynik=p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); end; end ,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); if(wynik)then return wynik;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; local parametry_modul=require("Module:Parametry"); local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_inna_tabelka,true); for _,value in __next,tab_inna_tabelka,nil do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tab_atrybuty); return tab_atrybuty; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,}); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa,true); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; qdqhte2u82wi2vipyy096hs1hp0ahum Moduł:StronicowyParser/NumerObiektu 828 59499 560363 552879 2026-11-01T08:35:20Z Persino 2851 560363 Scribunto text/plain local p={}; function p.NumerObiektu(frame, nazwa_obiektu) local pf=frame:getParent(); local parametry_modul=require("Module:Parametry"); local uchwyt_obiektu=frame.args["uchwyt"]; local bez_automatu=parametry_modul.CzyTak(frame.args["bez automatu"]); local html_modul=require("Module:Html"); uchwyt_obiektu=uchwyt_obiektu and html_modul.DecodeHtml(uchwyt_obiektu,true) or nil; local nazwa_strony; local html_modul=require("Module:Html"); local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu; nazwa_artykulu=frame.args["nazwa artykułu"]; nazwa_ksiazki=frame.args["nazwa książki"]; local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local czy_table_tablica_transportu=parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki); local czy_aktualna_strona=nil; local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"]; local nazwa_jednostki=pf.args["nazwa jednostki"]; if((nazwa_przestrzeni_nazw) or (nazwa_jednostki))then if(((not nazwa_artykulu)and(not nazwa_ksiazki)) or((nazwa_artykulu)and(not nazwa_ksiazki)))then if(nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw=html_modul.DecodeHtml(nazwa_przestrzeni_nazw,true); end; if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local ksiazkowe_modul=require("Module:Książkowe"); local tabela_nazw_poczatkowe={}; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_poczatkowe); local nazwa_jednostki=nazwa_jednostki or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_poczatkowe); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={};local tabela_nazw_aktualna={}; strona=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); local aktualna_strona=ksiazkowe_modul["PełnaNazwaArtykułu"](nil,tabela_nazw_aktualna); if(strona~=aktualna_strona)then nazwa_artykulu=nazwa_artykulu or nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki_aktualna=ksiazkowe_modul["PełnaNazwaKsiążki"](nil,tabela_nazw_aktualna); local nazwa_ksiazki_strony=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(nazwa_ksiazki_aktualna~=nazwa_ksiazki_strony)then nazwa_ksiazki=nazwa_ksiazki or nazwa_ksiazki_strony; end; end; end; end; if((not nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=1; nazwa_strony=""; elseif((nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=2; nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; end; end; else local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu); nazwa_ksiazki=html_modul.DecodeHtml(nazwa_ksiazki,true); nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=nazwa_modulu,}; local ksiazkawe_modul=require("Module:Książkowe"); local tabela_nazw={}; nazwa_ksiazki=ksiazkawe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); if((nazwa_artykulu)and(nazwa_artykulu~=""))then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; else nazwa_artykulu=""; end; nazwa_strony=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; nazwa_strony=strona; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; else czy_aktualna_strona=2; nazwa_strony=strona; end; end; end; local link = function(adres_linku,przedrostek,przyrostek,skrot,lacznik,nazwa_linku,klasa,styl,link_wikidane,prefiks_numeru_woluminowego_strony) local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local spanramka_dziecko=mw.html.create('span'); if(czy_klasa)then spanramka_dziecko:attr("class",klasa);end; if(czy_styl)then spanramka_dziecko:attr('style',styl);end; local czy_skrot=parametry_modul.CzyTak(skrot); local nazwa_linku=(przedrostek or "") ..(czy_skrot and (skrot..lacznik) or ((przedrostek and skrot and lacznik) and (function() if(prefiks_numeru_woluminowego_strony)then local podstrona=prefiks_numeru_woluminowego_strony[1]; local pozawoluminowe_strony=prefiks_numeru_woluminowego_strony[2]; local czy_artykul_korzystany=prefiks_numeru_woluminowego_strony[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return podstrona..lacznik; end; end; end; return ""; end)() or "") )..nazwa_linku; local nazwa_linku_tyt=(przyrostek and (function() if(prefiks_numeru_woluminowego_strony)then local podstrona=prefiks_numeru_woluminowego_strony[1]; local pozawoluminowe_strony=prefiks_numeru_woluminowego_strony[2]; local czy_artykul_korzystany=prefiks_numeru_woluminowego_strony[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return (przyrostek or "")..(czy_skrot and skrot or podstrona); end; end; end; end)()); spanramka_dziecko:wikitext(nazwa_linku); local kod_html=tostring(spanramka_dziecko:allDone()); ---- local spanramka=mw.html.create('span');if((link_wikidane)and(link_wikidane[1]))then spanramka:addClass("link");spanramka:addClass(link_wikidane[1]);end; local spanramka2; if(nazwa_linku_tyt)then spanramka2=mw.html.create('span');if((link_wikidane)and(link_wikidane[1]))then spanramka2:addClass("link");spanramka2:addClass(link_wikidane[1]);end; end; ---- local linki_modul=require("Module:Linki"); linki_modul.LinkOgromne(spanramka,nazwa_linku); ---- local link="[["..adres_linku.."|"..kod_html.."]]";spanramka:wikitext(link); if(nazwa_linku_tyt)then local link2="([["..adres_linku.."|"..nazwa_linku_tyt.."]])";spanramka2:wikitext(link2);end; return tostring(spanramka:allDone())..(nazwa_linku_tyt and ("&nbsp;"..tostring(spanramka2:allDone())) or ""); end; local wzor = function(uchwyt,numeracja,styl_main,styl_odstepu,pole_odstepu,styl_wzoru,klasa_wzoru,wzor,opis,opis2,klasa_opisu,styl_opisu,styl_opisu_2,wzor_opisu,wzor_opisu_2,styl_alternatywy_opisu,styl_alternatywy_opisu_2,pozycja_numeracji,klasa_numeracji,styl_numeracji,bez_automatu) local divramka=mw.html.create('div'); local parametry_modul=require("Module:Parametry"); local czy_pozycja_numeracji_prawa=parametry_modul.CzyTak(pozycja_numeracji); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',"wzór_"..html_modul.EncodeId(uchwyt,true)); else if(numeracja)then divramka:attr('id',"wzór_"..numeracja); else divramka:attr('id',"niedopasowany-wzór_"..html_modul.EncodeId(uchwyt,true)); end; end; end; if(parametry_modul.CzyTak(styl_main))then divramka:attr('style',styl_main); end; local uchwyt_fun=function() if(parametry_modul.CzyTak(uchwyt))then local divuchwytramka=mw.html.create('div'); divuchwytramka:attr('class',klasa_numeracji); divuchwytramka:attr('style',styl_numeracji); if(parametry_modul.CzyTak(bez_automatu))then divuchwytramka:wikitext('(',uchwyt..")"); else if(numeracja)then divuchwytramka:wikitext('('..numeracja..")"); else divuchwytramka:wikitext("(Niedopasowany uchwyt: "..uchwyt..")"); end; end; divramka:node(divuchwytramka); end; end; local pole_odstepu_fun=function() divramka:addClass("wzory"); local divramka2=mw.html.create('div'); divramka2:attr('style',styl_odstepu); divramka2:wikitext(pole_odstepu); divramka:node(divramka2); end; local opis_fun=function(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu) if(parametry_modul.CzyTak(opis))then local divramka5=mw.html.create('div') divramka5:attr('class',klasa_opisu) divramka5:attr('style',styl_opisu) divramka5:wikitext(wzor_opisu) divramka:node(divramka5) else local divramka5=mw.html.create('div'); divramka5:attr('style',styl_alternatywy_opisu); divramka:node(divramka5) end; end; if(not czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; opis_fun(opis2,styl_opisu_2,wzor_opisu_2,styl_alternatywy_opisu_2); local divramka4=mw.html.create('div'); divramka4:attr('class',klasa_wzoru); divramka4:attr('style',styl_wzoru); divramka4:wikitext(wzor); divramka:node(divramka4); opis_fun(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu); if(czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; return tostring(divramka:allDone()); end; local rysunek=function(uchwyt,numeracja,opis, rysunek, pozycja,rozmiar,klasa,styl,bez_automatu) local czy_uchwyt=parametry_modul.CzyTak(uchwyt); local id; if(czy_uchwyt)then if(numeracja)then if(parametry_modul.CzyTak(bez_automatu))then id="rysunek_"..html_modul.EncodeId(uchwyt,true); else id="rysunek_"..numeracja; end; else id="niedopasowany-rysunek_"..html_modul.EncodeHtml(uchwyt,true); end; end; local czy_opis=parametry_modul.CzyTak(opis); local plik_modul=require("Module:Plik"); local wywolanie_rysunku=plik_modul.Plik{ plik=((rysunek)and rysunek or "Przykładowy rysunek.svg"), id=id, styl=styl, klasa=klasa, ramka="mały", pozycja=pozycja or "prawo", rozmiar=(rozmiar or "200px"), opis=((czy_uchwyt or czy_opis)and (((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or ""), }; --local wywolanie_rysunku="[[File:"..((rysunek)and rysunek or "Przykładowy rysunek.svg").."|thumb|"..(pozycja or "right").."|"..(rozmiar or "200px")..((czy_uchwyt or czy_opis)and ("|"..((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or "").."]]"; return tostring(wywolanie_rysunku); end; local wypowiedzenie = function(uchwyt,przedrostek,numeracja,klasa,styl,przedrostek2,rodzaj,kogo,czego,jakie,styl_naglowka,styl_tekstu,tekst,bez_automatu) local divramka=mw.html.create('div'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',przedrostek.."_"..html_modul.EncodeId(uchwyt,true)); else divramka:attr('id',((not numeracja)and "niedopasowany-" or "")..przedrostek.."_"..(numeracja or html_modul.EncodeId(uchwyt,true))); end; end; klasa=przedrostek..(klasa and (" ") or "")..(klasa or ""); divramka:attr('class',klasa); divramka:attr('style',styl); local wikitext=""; if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then wikitext="("..przedrostek2.." "..uchwyt..")"; else if(numeracja)then wikitext="("..przedrostek2.." "..numeracja..")"; else wikitext="("..przedrostek2.." Niedopawany uchwyt: "..uchwyt..")"; end; end; end; if(parametry_modul.CzyTak(styl_naglowka))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_naglowka); spanramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); divramka:node(spanramka); else divramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); end; divramka:wikitext('<BR>'); if(parametry_modul.CzyTak(styl_tekstu))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_tekstu); spanramka:wikitext(tekst); divramka:node(spanramka); else divramka:wikitext(tekst); end; return tostring(divramka:allDone()); end; local punkty = function(uchwyt,numeracja,przedrostek_id,klasa,styl,prefiks,bez_automatu) local spanramka=mw.html.create('sup'); spanramka:attr('style',klasa); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then spanramka:attr('id',przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); else if(parametry_modul.CzyTak(numeracja))then spanramka:attr('id',przedrostek_id.."_"..numeracja); else spanramka:attr('id',"niedopasowany-"..przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); end; end; end; spanramka:attr('style',styl); local smallramka=mw.html.create('small'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then smallramka:wikitext('['..prefiks..": "..uchwyt..']'); else if(parametry_modul.CzyTak(numeracja))then smallramka:wikitext('['..prefiks..": "..numeracja..']'); else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: "..uchwyt..']'); end; end; else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: brak uchwytu]"); end; spanramka:node(smallramka); return tostring(spanramka:allDone()); end; local nazwa_strony_fun=function(nazwa_strony) if((nazwa_strony)and(nazwa_strony==""))then return "";end; if(czy_aktualna_strona)then if(czy_aktualna_strona==1)then return ""; elseif(czy_aktualna_strona==2)then if(tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return "";end; end; else if((tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and (tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return ""; end; end; return html_modul.EncodeId(nazwa_strony); end; local function BladTablicyTransportu(czy_table_tablica_transportu) if(not czy_table_tablica_transportu)then local blad_modul=require("Module:Błąd"); return blad_modul.error{tekst="Błąd stronicowego parsera: '''Moduł:StronicowyParser'''. Tablica silnika transportu lub jego składowe przyjmują wartość nietabelkową.",tag="strong",}; end; return ""; end; local function BezNumeracjiZUchwytami() if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(uchwyt_obiektu)then local uchwyt_obiektu=html_modul.EncodeId(uchwyt_obiektu,true); return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")"; else local uchwyt_obiektu=parametry_modul.CzyTak(uchwyt_obiektu) and html_modul.EncodeId(uchwyt_obiektu,true) or nil; return "("..link(nazwa_strony.."#"..frame.args["id"].."_".."Nieznany uchwyt",frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..(uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")"; end; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,uchwyt_obiektu,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,uchwyt_obiektu,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,uchwyt_obiektu,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return uchwyt_obiektu; end; else return uchwyt_obiektu; end; end; if((not czy_table_tablica_transportu)or(parametry_modul.CzyTak(frame.args["bez automatu"])))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(czy_table_tablica_transportu); end; local link_wikidane;local prefiks_numeru_woluminowego_strony; local tabela_listy_uchwytow_i_numeracji_na_stronie; if(czy_aktualna_strona==nil)then local dane_analizy_artykulu=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(dane_analizy_artykulu)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni=dane_analizy_artykulu[nazwa_przestrzeni]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; prefiks_numeru_woluminowego_strony=tabela_listy_analizy_na_stronie.prefiks_numeru_woluminowego_strony; end; end; end; end; end; end; elseif(czy_aktualna_strona==1)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu; link_wikidane=tabela_listy_danych_analizy_ksiazki.link_wikidane; prefiks_numeru_woluminowego_strony=tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_na_stronie))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; elseif(czy_aktualna_strona==2)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; prefiks_numeru_woluminowego_strony=tabela_listy_analizy_na_stronie.prefiks_numeru_woluminowego_strony; end; end; end; end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); if(tabela_listy_uchwytow_i_numeracji_na_stronie)then local spis_uchwytow=tabela_listy_uchwytow_i_numeracji_na_stronie[nazwa_obiektu]; local uchwyty_bez_numeracji=spis_uchwytow.uchwyty_bez_numeracji; spis_uchwytow=uchwyty_bez_numeracji or spis_uchwytow; if(spis_uchwytow)then if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then local UchwytObiektu=function(uchwyt_obiektu) if(uchwyty_bez_numeracji)then return uchwyt_obiektu[1]; end; return uchwyt_obiektu; end; for _, dany_artykul in ipairs(spis_uchwytow)do if(UchwytObiektu(dany_artykul[1])==uchwyt_obiektu)then if(not uchwyty_bez_numeracji)then if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(not dany_artykul[2])then return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony)..")"; end; return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..dany_artykul[2],frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,dany_artykul[2],frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,dany_artykul[2],frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,dany_artykul[2],frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="tekst")then local tekst=dany_artykul[2]; if(tekst)then local tekst=pf:preprocess(tekst); return tekst; end; return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else if(dany_artykul[2])then local tytul_szablonu=frame.args["nazwa szablonu"] or szablonowe_modul.NazwaSzablonu(frame:getParent():getTitle()); local tab_naglowek=stronicowyparser_obiekty_modul.linki_szablony_wprowadzenia_tekstu[nazwa_obiektu]; local adres=dany_artykul[2][2]; local czy_w_tym_szablony=mw.ustring.match(adres,"{{[^{}]+}}"); if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); adres=specjalne_modul["PrzetwórzNagłówek"](adres,true); end; local adres=dany_artykul[2][1].."#"..adres; if(tytul_szablonu==tab_naglowek[1])then local naglowek=dany_artykul[2][3]; if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false); end; return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],naglowek,frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony); elseif(tytul_szablonu==tab_naglowek[2])then return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"tutaj",frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony); end; end; end; end; end; end; end; end; if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..html_modul.EncodeId(uchwyt_obiektu,true),frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,nil,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,nil,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],nil,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,nil,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; end; return p; 0gklrw2fj5zxzcrg1g4q9kj20aoyhm5 Szablon:Wypowiedzenie/opis/wypowiedzenia 10 62004 560379 544307 2026-11-01T09:19:40Z Persino 2851 560379 wikitext text/x-wiki <includeonly><!-- -->{{{2|}}}{{#switch:{{{1|{{ROOTPAGENAME}}}}} |#default |Wypowiedzenie=wypowiedzenia |Twierdzenie=twierdzenia |Hipoteza=hipotezy |Lemat=lematu |Kryterium=kryterium |Dowód=dowodu |Postulat=postulatu |Postulaty=postulatów |Określenie=definicji |Zadanie=zadania |Praktyka=ćwiczenia |Procedura=procedury |Schemat=schematu }}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy szablonu {{s|Wypowiedzenie/opis}}.}}<!-- -->{{Kategoria|Szablony pomocnicze potrzebne do dokumentacji szablonów}}<!-- --></noinclude> q8iudmyee5abfl27xpuphvh0ukhppc2 560380 560379 2026-11-01T09:21:10Z Persino 2851 560380 wikitext text/x-wiki <includeonly><!-- -->{{{2|}}}{{#switch:{{{1|{{ROOTPAGENAME}}}}} |#default |Wypowiedzenie=wypowiedzenia |Twierdzenie=twierdzenia |Hipoteza=hipotezy |Lemat=lematu |Kryterium=kryterium |Dowód=dowodu |Postulat=postulatu |Postulaty=postulatów |Określenie=definicji |Zadanie=zadania |Praktyka=ćwiczenia |Procedura=procedury |Schemat=schematu |Tbl= <syntaxhighlight lang="lua"> p.napisy_wprowadzenia_tekstu_przypisowych={ ["Przypisy"]=true, ["Uwagi"]=true, ["Bibliografia"]=true, ["Licencja"]=true, }; </syntaxhighlight> }}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy szablonu {{s|Wypowiedzenie/opis}}.}}<!-- -->{{Kategoria|Szablony pomocnicze potrzebne do dokumentacji szablonów}}<!-- --></noinclude> i1i2xhvthzpsl3qkrxvb8eml39twku1 560381 560380 2026-11-01T09:22:32Z Persino 2851 560381 wikitext text/x-wiki <includeonly><!-- -->{{{2|}}}{{#switch:{{{1|{{ROOTPAGENAME}}}}} |#default |Wypowiedzenie=wypowiedzenia |Twierdzenie=twierdzenia |Hipoteza=hipotezy |Lemat=lematu |Kryterium=kryterium |Dowód=dowodu |Postulat=postulatu |Postulaty=postulatów |Określenie=definicji |Zadanie=zadania |Praktyka=ćwiczenia |Procedura=procedury |Schemat=schematu |Tbl= <syntaxhighlight lang="lua"> p.napisy_wprowadzenia_tekstu_przypisowych={ ["Przypisy"]=true, ["Uwagi"]=true, ["Bibliografia"]=true, ["Licencja"]=true, }; </syntaxhighlight> }}{{{3|}}}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy szablonu {{s|Wypowiedzenie/opis}}.}}<!-- -->{{Kategoria|Szablony pomocnicze potrzebne do dokumentacji szablonów}}<!-- --></noinclude> rq1se1ip7uu85wqv1aazfb9rx9z18io 560385 560381 2026-11-01T09:39:24Z Persino 2851 560385 wikitext text/x-wiki <includeonly><!-- -->{{{2|}}}{{#switch:{{{1|{{ROOTPAGENAME}}}}} |#default |Wypowiedzenie=wypowiedzenia |Twierdzenie=twierdzenia |Hipoteza=hipotezy |Lemat=lematu |Kryterium=kryterium |Dowód=dowodu |Postulat=postulatu |Postulaty=postulatów |Określenie=definicji |Zadanie=zadania |Praktyka=ćwiczenia |Procedura=procedury |Schemat=schematu |Tbl={{#switch:{{{4|tekst}}} |tekst=definicji tabeli |kod=<syntaxhighlight lang="lua"> p.napisy_wprowadzenia_tekstu_przypisowych={ ["Przypisy"]=true, ["Uwagi"]=true, ["Bibliografia"]=true, ["Licencja"]=true, }; </syntaxhighlight> |wikikod=<nowiki><syntaxhighlight lang="lua"> p.napisy_wprowadzenia_tekstu_przypisowych={ ["Przypisy"]=true, ["Uwagi"]=true, ["Bibliografia"]=true, ["Licencja"]=true, }; </syntaxhighlight></nowiki>}} }}{{{3|}}}</includeonly><noinclude><!-- -->{{Dokumentacja|zawartość=Szablon pomocniczy szablonu {{s|Wypowiedzenie/opis}}.}}<!-- -->{{Kategoria|Szablony pomocnicze potrzebne do dokumentacji szablonów}}<!-- --></noinclude> 2b3bvc0hhpibher7fegqpcaeu00kgf2 Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III 4 63512 560397 558522 2026-11-01T10:38:09Z Persino 2851 560397 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: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Linia do sprawdzenia. | 2 = {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} | _2 = 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}}}}: {{Tbl|uchwyt=p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|tekst=<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}}. Jest to rozszerzenie funkcji: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}, który jest dla poszczególnych linii {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, na cały tekst {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{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 przodu 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: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Przeszukiwany tekst. | 2 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _2 = Początek wyszukiwania. | 3 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _3 = Koniec wyszukiwania. | 4 = {{Code|jak}} {{Patrz|jak}} |_4 = Odpowiadająca wartości: {{Code|true}}, gdy wyszukiwanie do tyłu, a przeciwnie 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ł, w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{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, tzn. czy jest jednym z szablonów: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a w przypadku znacznika, czy jest według: {{Tag|center}}, czyli też centrowania. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry fukcji: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} | _4 = Obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika. | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.. }} Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, o kluczach o nazwach z nimi w: {{Tbl|uchwyt=p.szablony_wprowadzenia_napisu_spisu_rzeczy|tekst=<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.: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{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. Wykluczanie, 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. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = 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}}. | 3 = {{Code|liczba_od}} | _3 = Jak w: {{LinkPatrz|liczba_od}}. | 4 = {{Code|liczba_do}} | _4 = Jak w: {{LinkPatrz|liczba_do}}. | 5 = {{Code|jak}} | _5 = Jak w: {{LinkPatrz|jak}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, w pewnych zakresach: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} - {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według: {{Code|jak}} {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. 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: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} | _1 = Początek wyszukanej linii. | 2 = {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} | _2 = Koniec wyszukiwanej linii. | 3 = {{Code|linia}} | _3 = 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> l8mi8u27asq4qegkkfxknbgzfe493s2 560398 560397 2026-11-01T10:38:47Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} */ 560398 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: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Linia do sprawdzenia. | 2 = {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} | _2 = 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}}}}: {{Tbl|uchwyt=p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|tekst=<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ą: {{LinkTbl|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Jest to rozszerzenie funkcji: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}, który jest dla poszczególnych linii {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, na cały tekst {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{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 przodu 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: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Przeszukiwany tekst. | 2 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _2 = Początek wyszukiwania. | 3 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _3 = Koniec wyszukiwania. | 4 = {{Code|jak}} {{Patrz|jak}} |_4 = Odpowiadająca wartości: {{Code|true}}, gdy wyszukiwanie do tyłu, a przeciwnie 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ł, w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{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, tzn. czy jest jednym z szablonów: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a w przypadku znacznika, czy jest według: {{Tag|center}}, czyli też centrowania. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry fukcji: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} | _4 = Obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika. | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.. }} Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, o kluczach o nazwach z nimi w: {{Tbl|uchwyt=p.szablony_wprowadzenia_napisu_spisu_rzeczy|tekst=<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.: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{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. Wykluczanie, 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. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = 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}}. | 3 = {{Code|liczba_od}} | _3 = Jak w: {{LinkPatrz|liczba_od}}. | 4 = {{Code|liczba_do}} | _4 = Jak w: {{LinkPatrz|liczba_do}}. | 5 = {{Code|jak}} | _5 = Jak w: {{LinkPatrz|jak}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, w pewnych zakresach: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} - {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według: {{Code|jak}} {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. 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: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} | _1 = Początek wyszukanej linii. | 2 = {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} | _2 = Koniec wyszukiwanej linii. | 3 = {{Code|linia}} | _3 = 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> tri9lkub1fbqnqq2c9uam4t437qfkx9 560402 560398 2026-11-01T10:43:24Z Persino 2851 560402 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: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Linia do sprawdzenia. | 2 = {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} | _2 = 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}}}}: {{Tbl|uchwyt=p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|tekst= <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ą: {{LinkTbl|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Jest to rozszerzenie funkcji: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}, który jest dla poszczególnych linii {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, na cały tekst {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{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 przodu 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: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Przeszukiwany tekst. | 2 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _2 = Początek wyszukiwania. | 3 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _3 = Koniec wyszukiwania. | 4 = {{Code|jak}} {{Patrz|jak}} |_4 = Odpowiadająca wartości: {{Code|true}}, gdy wyszukiwanie do tyłu, a przeciwnie 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ł, w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{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, tzn. czy jest jednym z szablonów: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a w przypadku znacznika, czy jest według: {{Tag|center}}, czyli też centrowania. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry fukcji: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} | _4 = Obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika. | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.. }} Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, o kluczach o nazwach z nimi w: {{Tbl|uchwyt=p.szablony_wprowadzenia_napisu_spisu_rzeczy|tekst= <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.: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{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. Wykluczanie, 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. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = 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}}. | 3 = {{Code|liczba_od}} | _3 = Jak w: {{LinkPatrz|liczba_od}}. | 4 = {{Code|liczba_do}} | _4 = Jak w: {{LinkPatrz|liczba_do}}. | 5 = {{Code|jak}} | _5 = Jak w: {{LinkPatrz|jak}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, w pewnych zakresach: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} - {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według: {{Code|jak}} {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. 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: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} | _1 = Początek wyszukanej linii. | 2 = {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} | _2 = Koniec wyszukiwanej linii. | 3 = {{Code|linia}} | _3 = 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> jnxe7nyc8cr0gqu13xlrgrfa12hukt8 Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron 4 63513 560407 558265 2026-11-01T10:56:37Z Persino 2851 /* Dalszy opis funkcji */ 560407 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa ramki tablicy transportu. }} == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. }} === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} | _1 = Pełna nazwa strony. }} === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabelę tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}} (jest liczona pełna nazwa strony bieżącej), co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest wyznaczana pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony z: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jeżeli ona jest adresem względnym, ale nie musi być, z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}} (możliwie względny), i parametr drugi: {{LinkPatrz|strona_aktualna}} (zawsze jest adresem bezwzględnym), co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, wykorzystując do tego funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszystkie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i wyznaczamy nazwy strony bez tego początku, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A później z adresów policzonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któreś z nich są sobie nierówne, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. | 2 = {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} | _2 = Tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu. | 3 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _3 = Nazwa strony, danego spisu. | 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy strona jest bieżąca. | 5 = {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} | _5 = Pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron. | 6 = {{Code|obiekty}} {{Patrz|obiekty}} | _6 = Elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty. | 7 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _7 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. | 8 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _8 = Uchwyt do bazy danych kodowania tekstu. | 9 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _9 = Nazwa aktualna, czy bieżąca strony. szablonowa strony, w wersji w jakiej się wywołuje wywołania szablonowe. | 10 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _10 = Tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}. | 11 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _11 = Tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 12 = {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} | _12 = Tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu. | 13 = {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} | _13 = Czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}. | 14 = {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} | _14 = Rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj, to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie. | 15 = {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} | _15 = baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. }} === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zmienna (szablon), nie musi być to normalny szablon. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Zmienna, którego typu jest obiekt. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu typu {{LinkPatrz|obiekt}}. | 4 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _4 = Czy to jest szablon. | 5 = {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} | _5 = Czy to jest znacznik. | 6 = {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} | _6 = Czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}. | 7 = {{Code|funkcja1}} {{Patrz|funkcja1}} | _7 = Funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, | 8 = {{Code|funkcja2}} {{Patrz|funkcja2}} | _8 = funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. }} ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|numer}} {{Patrz|numer}} | _1 = Numer parametru. }} Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. }} ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: {{Tbl|uchwyt=p.szablony_sztucznego_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight>}} Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: {{Tbl|uchwyt=p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight>}} Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest uruchomiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|powtorka}} {{Patrz|powtorka}} | _4 = Numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}. | 5 = {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} | _5 = Parametry szablonu wraz z ich wartościami. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu wywołania. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Modyfikatory szablonu. }} Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. }} Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warunkowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. }} W powyższym opisie występują szablony opisane w: {{LinkPatrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, a jej definicja jest: <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight> Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{LinkPatrz|p.szablony_indeksowania}}, a jej zawartość: <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight> Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|naglowek}} {{Patrz|naglowek}} | _1 = Tekst nagłówka napisu wprowadzenia tekstu. }} Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na '''HTML''' nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt-ref}} | _1 = Nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga'''. | 2 = {{Code|kod}} {{Patrz|kod-ref}} | _2 = Numer danego typu przypisu. }} Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: {{OpisParametrów | 1 = {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} | _1 = Gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}. | 2 = {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} | _2 = Tekst rozdziału. | 3 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _3 = Poziom rozdziału. }} ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{LzLua|mw.text.encode}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}} {{ZobaczTeż|>0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. {{HNumer|1= ======= Rozdziały ewentualnie powtarzające się ======= }} Na sam koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. {{HNumer|1= ======= Tablica spisu treści ======= }} Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}} {{Patrz|tablica_spisu_tresci.nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dqof4m79ig6o81gaaj5in0ds09uanwk 560408 560407 2026-11-01T10:59:18Z Persino 2851 /* {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} */ 560408 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa ramki tablicy transportu. }} == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. }} === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} | _1 = Pełna nazwa strony. }} === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabelę tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}} (jest liczona pełna nazwa strony bieżącej), co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest wyznaczana pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony z: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jeżeli ona jest adresem względnym, ale nie musi być, z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}} (możliwie względny), i parametr drugi: {{LinkPatrz|strona_aktualna}} (zawsze jest adresem bezwzględnym), co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, wykorzystując do tego funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszystkie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i wyznaczamy nazwy strony bez tego początku, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A później z adresów policzonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któreś z nich są sobie nierówne, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. | 2 = {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} | _2 = Tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu. | 3 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _3 = Nazwa strony, danego spisu. | 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy strona jest bieżąca. | 5 = {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} | _5 = Pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron. | 6 = {{Code|obiekty}} {{Patrz|obiekty}} | _6 = Elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty. | 7 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _7 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. | 8 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _8 = Uchwyt do bazy danych kodowania tekstu. | 9 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _9 = Nazwa aktualna, czy bieżąca strony. szablonowa strony, w wersji w jakiej się wywołuje wywołania szablonowe. | 10 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _10 = Tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}. | 11 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _11 = Tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 12 = {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} | _12 = Tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu. | 13 = {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} | _13 = Czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}. | 14 = {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} | _14 = Rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj, to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie. | 15 = {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} | _15 = baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. }} === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zmienna (szablon), nie musi być to normalny szablon. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Zmienna, którego typu jest obiekt. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu typu {{LinkPatrz|obiekt}}. | 4 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _4 = Czy to jest szablon. | 5 = {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} | _5 = Czy to jest znacznik. | 6 = {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} | _6 = Czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}. | 7 = {{Code|funkcja1}} {{Patrz|funkcja1}} | _7 = Funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, | 8 = {{Code|funkcja2}} {{Patrz|funkcja2}} | _8 = funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. }} ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|numer}} {{Patrz|numer}} | _1 = Numer parametru. }} Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. }} ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: {{Tbl|uchwyt=p.szablony_sztucznego_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight>}} Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: {{Tbl|uchwyt=p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight>}} Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest uruchomiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|powtorka}} {{Patrz|powtorka}} | _4 = Numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}. | 5 = {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} | _5 = Parametry szablonu wraz z ich wartościami. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu wywołania. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Modyfikatory szablonu. }} Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. }} Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warunkowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania}}}} {{Patrz|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. }} W powyższym opisie występują szablony opisane w: {{Tbl|uchwyt=p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|tekst= <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight>}} Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{Tbl|uchwyt=p.szablony_indeksowania|tekst= <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight>}} Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|naglowek}} {{Patrz|naglowek}} | _1 = Tekst nagłówka napisu wprowadzenia tekstu. }} Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na '''HTML''' nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt-ref}} | _1 = Nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga'''. | 2 = {{Code|kod}} {{Patrz|kod-ref}} | _2 = Numer danego typu przypisu. }} Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: {{OpisParametrów | 1 = {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} | _1 = Gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}. | 2 = {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} | _2 = Tekst rozdziału. | 3 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _3 = Poziom rozdziału. }} ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{LzLua|mw.text.encode}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}} {{ZobaczTeż|>0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. {{HNumer|1= ======= Rozdziały ewentualnie powtarzające się ======= }} Na sam koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. {{HNumer|1= ======= Tablica spisu treści ======= }} Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}} {{Patrz|tablica_spisu_tresci.nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6npqh8fxrypcgyfx9nf11ytvd1bd7gt 560409 560408 2026-11-01T11:06:53Z Persino 2851 560409 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa ramki tablicy transportu. }} == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. }} === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} | _1 = Pełna nazwa strony. }} === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabelę tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}} (jest liczona pełna nazwa strony bieżącej), co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest wyznaczana pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony z: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jeżeli ona jest adresem względnym, ale nie musi być, z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}} (możliwie względny), i parametr drugi: {{LinkPatrz|strona_aktualna}} (zawsze jest adresem bezwzględnym), co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, wykorzystując do tego funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszystkie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i wyznaczamy nazwy strony bez tego początku, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A później z adresów policzonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któreś z nich są sobie nierówne, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. | 2 = {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} | _2 = Tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu. | 3 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _3 = Nazwa strony, danego spisu. | 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy strona jest bieżąca. | 5 = {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} | _5 = Pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron. | 6 = {{Code|obiekty}} {{Patrz|obiekty}} | _6 = Elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty. | 7 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _7 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. | 8 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _8 = Uchwyt do bazy danych kodowania tekstu. | 9 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _9 = Nazwa aktualna, czy bieżąca strony. szablonowa strony, w wersji w jakiej się wywołuje wywołania szablonowe. | 10 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _10 = Tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}. | 11 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _11 = Tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 12 = {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} | _12 = Tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu. | 13 = {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} | _13 = Czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}. | 14 = {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} | _14 = Rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj, to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie. | 15 = {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} | _15 = baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. }} === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zmienna (szablon), nie musi być to normalny szablon. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Zmienna, którego typu jest obiekt. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu typu {{LinkPatrz|obiekt}}. | 4 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _4 = Czy to jest szablon. | 5 = {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} | _5 = Czy to jest znacznik. | 6 = {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} | _6 = Czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}. | 7 = {{Code|funkcja1}} {{Patrz|funkcja1}} | _7 = Funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, | 8 = {{Code|funkcja2}} {{Patrz|funkcja2}} | _8 = funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. }} ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|numer}} {{Patrz|numer}} | _1 = Numer parametru. }} Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. }} ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: {{Tbl|uchwyt=p.szablony_sztucznego_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight>}} Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: {{Tbl|uchwyt=p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight>}} Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest uruchomiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|powtorka}} {{Patrz|powtorka}} | _4 = Numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}. | 5 = {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} | _5 = Parametry szablonu wraz z ich wartościami. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu wywołania. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Modyfikatory szablonu. }} Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. }} Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warunkowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. }} W powyższym opisie występują szablony opisane w: {{Tbl|uchwyt=p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|tekst= <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight>}} Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{Tbl|uchwyt=p.szablony_indeksowania|tekst= <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight>}} Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|naglowek}} {{Patrz|naglowek}} | _1 = Tekst nagłówka napisu wprowadzenia tekstu. }} Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na '''HTML''' nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt-ref}} | _1 = Nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga'''. | 2 = {{Code|kod}} {{Patrz|kod-ref}} | _2 = Numer danego typu przypisu. }} Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: {{OpisParametrów | 1 = {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} | _1 = Gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}. | 2 = {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} | _2 = Tekst rozdziału. | 3 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _3 = Poziom rozdziału. }} ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkPatrz|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{LzLua|mw.text.encode}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}} {{ZobaczTeż|>0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. {{HNumer|1= ======= Rozdziały ewentualnie powtarzające się ======= }} Na sam koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. {{HNumer|1= ======= Tablica spisu treści ======= }} Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}} {{Patrz|tablica_spisu_tresci.nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8o8ekney693yweanyhp2sp1ohoodm7x 560410 560409 2026-11-01T11:08:16Z Persino 2851 560410 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}|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.PobieranieInformacjiRamkiRozpatrywanejStrony}}{{Code|p.PobieranieInformacjiRamkiRozpatrywanejStrony}} == Pobieranie danych z obiektu {{LinkPatrz|self}}, biorąc jego podtablicę o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa ramki tablicy transportu. }} == {{Śródtytuł|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}}{{Code|p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi}} == Funkcja uruchamiacz, główna funkcja dzięki, której ładują się informacje według modułu: {{Code|{{ld2|StronicowyParser/informacje}}}} (tam jest użyty). Ten ładowacz jest pokazany w module opis: {{Code|{{lr2|Moduły/StronicowyParser/informacje}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. }} === {{Śródtytuł|DaneNazw}}{{Code|DaneNazw}} === Funkcja licząca nazwy podanej nazwy strony, tzn.: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}, oraz zwracające te kolejno nazwy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function DaneNazw(pelna_nazwa_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|pelna_nazwa_strony}} {{Patrz|pelna_nazwa_strony}} | _1 = Pełna nazwa strony. }} === Dalsza część funkcji - Tom I === ==== Tworzenie i inicjowanie początkowych tabel ==== Funkcja tworzy podtabelę tabeli zmiennej obiektowej {{LinkPatrz|self}} o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, o wartości pustej. Następnie są tworzone podtabele puste w tej ostatniej o kluczach: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}} i {{Code|licencja}}{{Patrz|licencja}}, oraz nilowe zmienne z tego samego, co ostatnie, o kluczu: {{Code|problemy}} {{Patrz|problemy}}. ==== Zmienne nazw strony bieżącej, czy nawet aktualnej, w zależności, czy istnieją odpowiednie ustawienia ==== Jest liczony adres strony, na której jest uruchomiona dana strona, wewnętrznej bezparametrowo według: {{Code|{{sr|#p["PełnaNazwaArtykułu"]|p=Książkowe}}}} {{Patrz|strona_aktualna}} (jest liczona pełna nazwa strony bieżącej), co z tego są liczone z niego: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, co z tego jest wyznaczana pełna nazwa książki {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}. ==== Zbieranie danych ustawień z: {{Code|.../config}}, jeśli istnieją ==== Jest liczony pełny adres ustawień: {{Code|pelna_nazwa_ksiazki_ustawienia}} {{Patrz|pelna_nazwa_ksiazki_ustawienia}}, według schematu: {{Code|"Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki}} {{Patrz|UstawieniaKsiążki}}. Co z tego jest sprawdzane, czy istnieje strona: {{Code|pelna_nazwa_ksiazki_ustawienia.."/config"}} {{Patrz|config}}, a jeśli tak, to wtedy wiemy, że to jest szablon, to go przedstawiamy w postaci szablonowej, licząc z: {{Code|{{sr|#p.NazwaSzablonu|p=Szablonowe}}}}. Dalej jest liczony ostatni wyliczony szablon z parametrem {{Code|książka}} {{Patrz|książka}}, dalej jeszcze raz, tym razem z parametrem: {{Code|artykuł}} {{Patrz|artykuł}} - te parametry przedstawiają parametry artykułu książkowego, skąd możemy ściągać stronę, by ją wyświetlić na stronie aktualnej, na pewno parametr {{LinkPatrz|książka}} nie może być parametrem składających z samych znaków odstępów, a jeśli tak jest, w takim razie z tych dwóch parametrów jest liczony parametr {{Code|strona}} {{Patrz|strona}}. Dalej liczymy, czy ona jest poprawnym adresem, używając funkcji: {{Code|{{sr|#p["CzyNiepoprawnaNazwa"]|p=Pudełko/Tom I}}}}. A jeżeli adres jest jednak poprawny, ta funkcja zwraca wartość odpowiadającej fałszywej wartości, wtedy jest liczony pełny adres strony z: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jeżeli ona jest adresem względnym, ale nie musi być, z parametrów, tzn. parametr pierwszy: {{LinkPatrz|strona}} (możliwie względny), i parametr drugi: {{LinkPatrz|strona_aktualna}} (zawsze jest adresem bezwzględnym), co względem tej funkcji mamy już: {{LinkPatrz|strona}}, czyli po tej operacji (procedurze) policzyliśmy bezwzględny jego adres. ===== Liczenie nazw z parametru pełnej nazwy aktualnej, nie bieżącej, strony wynikłe z obliczeń z ustawień ===== Policzona wartość strony: {{LinkPatrz|strona}}, jest sprawdzana, czy adres (strona), pod którym ona się kryje, istnieje, wykorzystując do tego funkcji: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}, a jeśli tak, to ten adres jest tylko formatowany. Porównujemy adres {{LinkPatrz|strona}} z {{LinkPatrz|strona_aktualna}}, czy przedstawiają nie ten sam adres, a jeżeli tak, to liczymy wszystkie nazwy strony, czyli dla bez {{Code|aktualna_}}, przyrównujemy do tego z tym początkiem, co odpowiada pełnej nazwie strony z {{Code|strona_aktualna}} {{LinkPatrz|strona_aktualna}} {{ZobaczTeż|strona_aktualna}}, i wyznaczamy nazwy strony bez tego początku, używając funkcji: {{LinkŚródtytuł|DaneNazw}}, ze zmiennej: {{Code|strona}} {{LinkPatrz|strona}} {{ZobaczTeż|strona}}. Te ostatnie nazwy są potrzebne do analizy strony bieżącej, nie aktualnej, tzn. na niej, jakie są szablony, jakie posiada spisy, jakie książki, a w nim spisy do nich, są dołączone. ====== Policzone nazwy strony aktualnej wpisane do ogólnej tablicy ====== A później z adresów policzonych wywołania, dotyczącej tego aktualnego, liczymy dla podtabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienne o kluczach: {{Code|aktualna_nazwa_przestrzeni}} {{Patrz|aktualna_nazwa_przestrzeni}}, {{Code|aktualna_nazwa_przestrzeni_ksiazki}} {{Patrz|aktualna_nazwa_przestrzeni_ksiazki}}, {{Code|aktualna_nazwa_ksiazki}} {{Patrz|aktualna_nazwa_ksiazki}} i {{Code|aktualna_nazwa_artykulu}} {{Patrz|aktualna_nazwa_artykulu}}, mając zmienne nazw policzone z tego aktualnego. ===== Czy strona bieżąca, ale nie zbiorcza, jest wyświetlana na stronie aktualnej, czy może jest tylko stroną zbiorczą uruchomioną pod inną nazwą ===== Jeśli zmienne nazw są policzone z: {{LinkZobaczTeż|strona}} i {{LinkZobaczTeż|strona_aktualna}}, to wtedy kolejno porównujemy, czy któreś z nich są sobie nierówne, a jeśli tak, to wywołujemy szablon z parametru: {{Code|zastępcza}} {{ZobaczTeż|zastępcza}} - jest to, czy strona jest zbiorcza, o nazwie: {{LinkPatrz|config}}, czy powinna być wartością niepustą. A jak tak, to wyznaczamy z tablicy: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, zmienną o kluczu: {{Code|alternatywna}} {{Patrz|alternatywna}}, co przyrównujemy jemu wartość logiczną z uzyskanego z szablonu z parametrem {{LinkZobaczTeż|zastępcza}}, a jeżeli ta zmienna przyjmuje wartość odpowiadająca fałszywej, wtedy zmienna z tej samej tablicy o kluczu: {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}} - jest to, czy strona jest inna niż zbiorcza, ale wyświetlana na innej stronie, przyjmuje wartość prawdziwą. === Dalsza część funkcji - Tom II === Tworzymy zmienną: {{Code|tablica_zmiennych}}, która jest tablicą pustą, którą uzupełniamy o elementy o kluczach: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}} - są to dane zebrane z bieżącej strony, i {{Code|linkobiekt}} {{Patrz|linkobiekt}} - są to dane zebrane o linkach na stronie odpowiadających poszczególnym obiektom. Uruchamiamy funkcję: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, z której wyznaczamy parametr: {{Code|tabela_listy_danych_analizy_ksiazki}} - są to dane zebrane z bieżącej i innych stron skojarzonej z nim, te elementy są tylko w postaci nieprzetworzonej, ale przygotowanej. A jeśli ten parametr jest tabelką - a jeżeli nie jest, to nastąpił błąd przetwarzania, i funkcja nie idzie dalej w instrukcję warunkową, wtedy wywołujemy funkcję: {{Code|{{sr|#p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony|p=StronicowyParser/NumeracjaObiektówStron}}}}. === Dalsza część funkcji - Tom III === Na sam koniec funkcji zwracamy tablicę: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} - ta zmienna zawiera dane w postaci przetworzonej policzonej, tzn. uchwytom są przydzielone numeracje, sprawdzane, czy uchwyty są policzone, są wyznaczone wszystkie kody problemów, które później są potrzebne do wyznaczania wszystkich kategorii błędów na stronie. == {{Śródtytuł|p.SpisRzeczyWedlePodanegoTekstu}}{{Code|p.SpisRzeczyWedlePodanegoTekstu}} == Funkcja generowania liczenia nagłówków strony, co na tej podstawie może być generowany '''spis treści''' strony. Funkcja przyporządkowuje uchwytom szablonów nagłówków ich identyfikatory i te nagłówki, w którym one leżą, jeżeli zmienna {{LinkPatrz|obiekty}} istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. | 2 = {{Code|tekst_artykulu}} {{Patrz|tekst_artykulu}} | _2 = Tekst przetworzony, przygotowany ewentualnie przez pewną funkcję, rozważanego artykułu. | 3 = {{Code|nazwa_strony}} {{Patrz|nazwa_strony}} | _3 = Nazwa strony, danego spisu. | 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy strona jest bieżąca. | 5 = {{Code|tylko_naglowek}} {{Patrz|tylko_naglowek}} | _5 = Pisz adresy stron z tylko nagłówkami '''#''', bez adresów stron. | 6 = {{Code|obiekty}} {{Patrz|obiekty}} | _6 = Elementy tam zebrane, są wykorzystywane do analizy nagłówków poprzez szablon {{s|Śródtytuł}}, któremu temu nagłówkowi odpowjada pewien uchwyt, czy uchwyty. | 7 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _7 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. | 8 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _8 = Uchwyt do bazy danych kodowania tekstu. | 9 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _9 = Nazwa aktualna, czy bieżąca strony. szablonowa strony, w wersji w jakiej się wywołuje wywołania szablonowe. | 10 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _10 = Tabela bazy zebranych informacji w postaci zakodowanej modułu {{m|Szablonowe}}. | 11 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _11 = Tabela przeanalizowanych elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 12 = {{Code|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} {{Patrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}} | _12 = Tablica dwuwymiarowa kodów o kluczach: szablonów referencji: '''REF...''' i '''POSTMATH''' oraz ich elementu numeru kodu {{Code|kod}}, którego elementem jest kod tego elementu. | 13 = {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tabela składająca się z trzech elementów, którego pierwszy element to: {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{Patrz|KtorySzablonMaZwracacKategorieNaglowek}} - funkcja dla szablonów problemów dla jak: {{s|Śródtytuł}}, w nagłówku, drugi: {{Code|KtorySzablonMaZwracacKategorieTekst}} {{Patrz|KtorySzablonMaZwracacKategorieTekst}} - funkcja dla tego typu szablonów, ale dla nich w tekście, nie w nagłówku, trzeci: {{Code|CzyJestTakiProblemJakoElementTablicy}} {{Patrz|CzyJestTakiProblemJakoElementTablicy}} | _13 = Czy nie rozważać, dla rozdziałów zerowych, przeciwnie: ta funkcja może przyjmować wartość {{Code|nil}}, wartość zwracana tego elementu, bo to jest funkcja, zależy, czy jest ustawiony kod problemu: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}}, a jeżeli jest taki, to ta funkcja przyjmuje zrzuconą wartość {{Code|true}}. | 14 = {{Code|wzory_zamiast_kodow}} {{Patrz|wzory_zamiast_kodow}} | _14 = Rozważaj wzory według tablicy: {{LinkPatrz|tablica_obiektow_strony_danych_kodow_specjalnych_modul}}, lub koduj, to według funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, to wykorzystuj w przypadku, gdy: {{LinkPatrz|nazwa_strony}}, istnieje, i jest wartością pustą, lub {{Code|{{sr|#p.NormaKoduZakodowanegoWikiTekstu|p=Szablonowe}}}} - przeciwnie. | 15 = {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} | _15 = baza tabela z zapamiętanymi podtabelami, którego poszczególne elementy wykorzystywane w spisie posiadają w sobie tylko pierwszy element w postaci przetworzonego uchwytu, bo używamy tylko uchwytów szablonów nagłówków. }} === {{Śródtytuł|SpecjalneWprowadzeniaTekstu}}{{Code|SpecjalneWprowadzeniaTekstu}} === Funkcja zamieniające pewne szablony, czy znaczniki, na rozdziały równaniowe. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Zmienna (szablon), nie musi być to normalny szablon. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Zmienna, którego typu jest obiekt. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Numer obiektu typu {{LinkPatrz|obiekt}}. | 4 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _4 = Czy to jest szablon. | 5 = {{Code|czy_znacznik}} {{Patrz|czy_znacznik}} | _5 = Czy to jest znacznik. | 6 = {{Code|czy_liczyc}} {{Patrz|czy_liczyc}} | _6 = Czy funkcję liczyć w sposób złożony, szablony typu: {{s|SpisTreści}} - zamieniający go na znacznik, czy prosty, co na samym końcu uruchamiana jest funkcja: {{LinkPatrz|funkcja1}}. | 7 = {{Code|funkcja1}} {{Patrz|funkcja1}} | _7 = Funkcja operująca na wygenerowanym pośrednio (dłuższe liczenie) lub bezpośrednio (krótsze) znaczniku, wychodząca z szablonu, i zamieniająca go na rozdział równaniowy, funkcja operująca dla szablonów: {{s|SpisTreści}} lub {{s|HNumer}}, | 8 = {{Code|funkcja2}} {{Patrz|funkcja2}} | _8 = funkcja operująca na znaczniku '''HTML''' nagłówka - typu jak: {{Tag|h1}}, i zamieniająca go na rozdział równaniowy. }} ==== {{Śródtytuł|ParametrNR}}{{Code|ParametrNR}} ==== Funkcja liczy dokładnie parametr dany o danym numerze, zbiór danych parametrów oznaczających to samo może być wiele, tylko że jedne mogą być ważniejsze od drugich. Definicja skrótowa funkcja: <syntaxhighlight lang="lua"> local function ParametrNR(numer)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|numer}} {{Patrz|numer}} | _1 = Numer parametru. }} Funkcja wykorzystywuje funkcję do uruchomienia: {{Code|{{sr|#p.SpisRzeczySzablon|p=StronicowyParser/Potrzebne}}}}, do generowania parametrów, a właściwie ich wartości. ==== {{Śródtytuł|ObiektKodNumer}}{{Code|ObiektKodNumer}} ==== Funkcja dodająca do bazy danych kolejny element bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, dla danego obiektu element na samym końcu, po maksymalnym elemencie do niego. Funkcja liczy kod przy pomocy funkcji: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local ObiektKodNumer=function(szablon,obiekt)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. }} ==== Dalszy opis funkcji ==== Dla {{LinkPatrz|czy_szablon}} prawdziwego dla szablonów sztucznego spisu treści, sprawdzanego przez tabelkę: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, dla danego szablonowego rozdziału generowanego według {{s|HNumer}}, jest on zamieniany na rozdział równaniowy poprzez funkcję: {{LinkPatrz|funkcja1}}. Ta tabela przedstawia się treścią: {{Tbl|uchwyt=p.szablony_sztucznego_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight>}} Dla innych rozdziałów szablonowych, tym razem generowanego przez szablon {{s|SpisTreści}}, którego parametry są wyznaczane przez funkcję: {{LinkŚródtytuł|ParametrNR}}, tabelka parametrów opisująca to: {{Tbl|uchwyt=p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight>}} Funkcja liczy artykuł, koloruje do niego link w: '''spisie treści''', na czerwona, wtedy generuje dodatkowy znacznik, z właściwością: {{Code|color:red}}, gdy on nie istnieje, i to wstawia do tabeli bazy, lub bez niego, wtedy bezposrednio generuje tekst równy nazwie tego szablonu, opakowany, lub nie, w zależności od istnienia. Do policzenia strony, czy ona istnieje, musi być przedtem zdekodowany funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, by później policzyć to sprawdzenie przy pomocy: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. W każdym bądź razie jest uruchomiana funkcja: {{LinkPatrz|funkcja1}}. Gdy to nie jest szablon, tzn.: {{LinkPatrz|czy_szablon}}, jest fałszywe, ale {{LinkPatrz|czy_znacznik}} jest prawdziwe, to takie znaczniki, jak od: {{Tag|h1}} do {{Tag|h6}}, są zamieniane na czysty tekst. W takim razie wywoływana jest dla tego przypadku funkcja: {{LinkPatrz|funkcja2}}. Funkcja: {{LinkPatrz|funkcja1}}, jest dla szablonów nagłówków, a: {{LinkPatrz|funkcja2}}, dla znaczników nagłówków. Z tych generowanych czystych generowanych tekstów są tworzone w tekście rozdziały równaniowe, by później wygenerować '''spis treści''', właśnie z nimi - z tymi nagłówkami, a bardziej ściśle linkami do nich. === {{Śródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}{{Code|SzablonNaglowkujWNaglowkuRozdzialu}} === Fukcja do obsługi nagłówków {{LinkPatrz|Śródtytuł}} w nagłówku, nie w tekście poza nim. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|powtorka}} {{Patrz|powtorka}} | _4 = Numer użycia takiego samego szablonu typu {{s|Śródtytuł}} {{Patrz|Śródtytuł}}. | 5 = {{Code|parametry_wywolania_szablonu}} {{Patrz|parametry_wywolania_szablonu}} | _5 = Parametry szablonu wraz z ich wartościami. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu wywołania. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Modyfikatory szablonu. }} Funkcja sprawdza, czy szablon w nagłówku jest typu {{LinkPatrz|Śródtytuł}}, a jeżeli tak, to liczy jego uchwyt, najpierw wyznacza je z parametru o nazwie {{Code|uchwyt}} {{Patrz|uchwyt}}, dalej sprawdzane jest, czy taki uchwyt tak zdefiniowany istnieje, jeśli tak, to wydobywana jest jego przetworzona tabela z tym właśnie uchwytek, funkcja robi to względem numeru {{Code|kod}} {{LinkPatrz|kod}} tego szablonu na podstawie funkcji: {{Code|{{sr|#p.WydobywanieUchwytuZeiBezNumeracji|p=StronicowyParser/ZbieranieDanychStron}}}}. Jeżeli wydobyta tabela {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} nie istnieje, w takim razie jest ona dekodowana funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a później jest traktowana jako adres '''URL''', tzn. jest dekodowana funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, dalej jest tworzona tabela pusta: {{LinkPatrz|lista_dwuelementowa}}, co dalej jest tam wstawiana do niej jako pierwszy element uzyskany uchwyt przetworzony. A jeśli jednak {{LinkPatrz|lista_dwuelementowa}} została wydobyta z naszej funkcji tabela, która istnieje, wtedy funkcja idzie, niż poprzednio, w inny krok instrukcji warunkowej, wtedy z tej tabeli jest wydobywany pierwszy element jako przetworzony wcześniej uchwyt. Gdy {{ZobaczTeż|uchwyt}} przetworzony uchwyt jest łańcuchem znaków niepusty, wtedy on jest dodawany w postaci tabeli, w której jest ten uchwyt, na sam koniec tabeli {{Code|numeracja}} {{Patrz|numeracja}}. Gdy liczba powtórzeń jest większa niż zero, wtedy jest wywoływana funkcja, przy którym mają być zwrócone kategorie, jeśli zostaną użyte, o nazwie {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}}. Gdy jednak uchwyt uzyskany nie istnieje, to wtedy jest to samo robione, co w: {{LinkZobaczTeż|uchwyt}}. Przed zwróceniem ile razy została dokonana powtórka, jest powiększany licznik powtorek, i to jest otrzymywane z tej funkcji. === {{Śródtytuł|SzablonNaglowkujWTekscieRozdzialu}}{{Code|SzablonNaglowkujWTekscieRozdzialu}} === Funkcja do analizy szablonów nagłówków w tekście rozdziału, nie w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. }} Funkcja sprawdza, czy tekst w bazie kodów jest typu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, w takim razie po wykryciu, że dla tego, że jest to wywołanie szablonowe, a nie instrukcja warunkowa w wikikodzie w tekście, wtedy podobnie jest robione, co w funkcji: {{LinkŚródtytuł|SzablonNaglowkujWNaglowkuRozdzialu}}, tylko zamiast {{Code|KtorySzablonMaZwracacKategorieNaglowek}} {{LinkPatrz|KtorySzablonMaZwracacKategorieNaglowek}} jest {{Code|KtorySzablonMaZwracacKategorieTekst}} {{LinkPatrz|KtorySzablonMaZwracacKategorieTekst}}. Przy wykryciu tam szablonu typu {{LinkPatrz|Śródtytuł}}, funkcja zawsze zwraca wartość {{Code|true}}, w innych przypadkach {{Code|false}}. W przypadku intrukcji warunkowej w wikikodzie i dla ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jest wtedy zwracana wartość {{Code|false}}. Funkcja w pozostałych przypadkach zwraca wartość logiczną {{Code|false}}. === {{Śródtytuł|SzablonyWywolywane}}{{Code|SzablonyWywolywane}} === Szablon zamieniający specjalne znaki szablonów, tzn.: {{Code|{{((}}}}, {{Code|{{))}}}}, {{Code|{{!}}}} i {{Code|{{=}}}}, kolejno na: {{Code|{{s|((}}}}, {{Code|{{s|))}}}}, {{Code|{{s|!}}}} i {{Code|{{s|{{=}}}}}}, takich {{ZobaczTeż|StronicowyParser}}, które zawierają wywołania '''Stronicowego Parsera''', czyli ramki typu: {{Code|{{m|StronicowyParser}}}}, czy: {{Code|{{m|StronicowyParser/}}}}, a inne są po prostu przypisywane. W przypadku linków, i nie tylko, tzn. dla szablonów {{LinkZobaczTeż|StronicowyParser}}, z innych stron niż korzystana, co jest trafnie oznaczone zaprzeczeniem parametru {{LinkPatrz|czy_artykul_korzystany}} są liczone parametry pudełkowe {{Code|{{m|Pudełko}}}}. Strony wskazane przez te parametry są analizowane, przy czym linki są przez inną funkcję, a inne już przez znów inną. Szablony nagłówków typu {{LinkPatrz|Śródtytuł}}, czy szablonów stronicowych otwierających i zamykających, one lub jego koledzy, tzn. ich: {{s|StronaStart}} i {{s|StronaKoniec}}, są zastępowane ciągiem pustym. Inne parametry opisane z tabeli {{Code|{{sr|#p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_stronicowe_kontenerowe_formatowania_wzorowego}}, są zastępowane ich zawartością, by uniknąć kontaktu nagłówków z tego typu szablonami. Szablony ideksowania określone tabelą: {{Code|{{sr|#p.szablony_indeksowania|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_indeksowania}}, nie są rozwijana z kodowania lub są, w zależności, czy zmienna: {{Code|czy_indeksowanie}} {{Patrz|czy_indeksowanie}}, ma wartość {{Code|true}} - tutaj są, czy odpowiadającej fałszywej wartości logicznej - a tutaj już nie. W przypadku instrukcji warunkowych, czy ramek {{lpg|Lua}} w {{lpg|Lua|Scribunto}}, one są rozwijane - kod tego jest zawartością {{LinkPatrz|szablon}}. W innych przypadkach funkcja zwraca wartość {{Code|nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywane(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. }} W powyższym opisie występują szablony opisane w: {{Tbl|uchwyt=p.szablony_stronicowe_kontenerowe_formatowania_wzorowego|tekst= <syntaxhighlight lang="lua"> p.szablony_stronicowe_kontenerowe_formatowania_wzorowego={ ["Formuła"]=1; }; </syntaxhighlight>}} Jest to szablon: {{s|Formuła}} i podobne, liniowe wstawiane do tekstu, ta tabela ma za zadanie zastąpić te szablony ich poszczególnym zawartościom, a ta funkcja, która ją wykorzystywuje się do tego przypadku, jest o nazwie: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. Tabelą szablonów indeksowania, to są one zdefiniowane przez: {{Tbl|uchwyt=p.szablony_indeksowania|tekst= <syntaxhighlight lang="lua"> p.szablony_indeksowania={ ["Kotwica"] =true, ["Indeksuj"]=true, }; </syntaxhighlight>}} Są to szablony kotwic: {{s|Kotwica}}, który jest szablonem liniowym, a {{s|Indeksuj}}, natomiast to blokowy. === {{Śródtytuł|SzablonyWywolywaneOgolny}}{{Code|SzablonyWywolywaneOgolny}} === Funkcja rozwija nagłówek, wydzielając z niego zwykły tekst, nie dopełniając pewnych operacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonyWywolywaneOgolny(naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|naglowek}} {{Patrz|naglowek}} | _1 = Tekst nagłówka napisu wprowadzenia tekstu. }} Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["WydzielZwykłyTekst"]|p=Specjalne}}}}, kod jej wywoływany jest z parametrami: <syntaxhighlight lang="lua"> local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { ---- tekst nagłówka; tekst=naglowek, ---- Nie wykorzystywuj w działaniu funkcji: Znaczniki, SzablonyStylowe, ZnakiSpecjalne; ["nagłówek"]=true, ---- Nie wykorzystuj dekodowania tekstu zakodowanego, bez rozwijania, ale wręcz przzeciwnie rozwijaj, pozostawiaj pewne szczególne kody przed rozkodowaniem; nieklasycznie=true, ---- Bazę kodowania weź z zewnątrz; kodowanie=false, ---- Wykorzystywana tablica kodowania tekstu modułu: Module:Szablonowe, zakodowanego z zewnątrz; ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, },__FUNKCJA1,__FUNKCJA2); </syntaxhighlight> Ta funkcja wydziela zwykły tekst z nagłówka z szablonami zwykłymi i ramkami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, bez naruszenia działania innych elementów szablonowych, jak tagi, czyli: {{s|#tag:}}, które też współdziałają też w kodzie danego nagłówka. Również i z linkami wewnętrznymi i zewnętrznymi, z których wydziela się zwykły tekst, bo wiadomo, że one nie mogą się znaleźć w linkach '''spisu treści''', bo nie może być link w linku w nim, a one niezależnie jakie, bo to ze względu na '''HTML''' nie możliwe technologicznie. Definicje dwóch kolejnych funkcji zdefiniowanych powyżej: <syntaxhighlight lang="lua"> ---- szablon - kod obiektu kodu w wikikodzie; ---- obiekt - typ obiektu kodu powyżej; ---- kod - numer tego samego typu obiektu; local __FUNKCJA1=function(szablon,obiekt,kod) ---- Funkcja wykorzystywana do ewentualnego modyfikowania użytych szablonów i przedstawianiu jego kodem symbolicznym, lub zastępowania pewnych szablonów nagłówków wartością pustą; local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end; local __FUNKCJA2=function(szablon,obiekt,kod) --- rozwijaj uzyskany szablon, dalej, gdy napotkasz, jeśli zostanie włączone zmienna indeksowania w postaci wartości logicznej; return czy_indeksowanie; end; </syntaxhighlight> Funkcja zwraca wartości, tzn. zmienną z przetworzenia nagłówkowego, bez usuniętych znaczników, stylów i znaków specjalnych, tzn. części otoczone pewnymi cudzysłowami z taką samą liczbą, więc pogrubienia i pochylenia tekstu: <syntaxhighlight lang="lua"> return naglowek, Znaczniki, SzablonyStylowe, ZnakiSpecjalne; </syntaxhighlight> Definicje tych zwróconych funkcji, tzn.: {{Code|Znaczniki}} {{Patrz|Znaczniki}}, {{Code|SzablonyStylowe}} {{Patrz|SzablonyStylowe}} i {{Code|ZnakiSpecjalne}} {{Patrz|ZnakiSpecjalne}}, którego opisy raczej przedstawiają ich nazwy, dokładnie one są udokumentowane tutaj: <syntaxhighlight lang="lua"> ---- tekst - tekst do przetworzenia; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) ---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML;---- jakie - nazwa lub wyrażenie regularne Lua w Scribunto nazwy ściśle określonego znacznika, a jeśli go nie podano, to usuwa dowolne znaczniki, jakie napotka, nawet znaczniki mechanizmu MediaWiki, nie tylko HTML; ---- funkcja do usuwania znaczników, tzn. w niej inne funkcje: __FUNKCJA1 - funkcja do zakodowywania tekstu przed usuwaniem znaczników, a __FUNKCJA2 - funkcja do odkodowania tego, co pozostało; tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function SzablonyStylowe(tekst) ---- funkcja do usuwania uruchomionych stylów, tzn. tych: <templatestyles src="..."/>, wtedy to staje się kodem parsera przetwarzanego za pomocą tekstu dla tego typu znacznika, kodami parsera mogą być też inne obiekty jak ramki Lua w Scribunto, ale nie muszą być takie, ale my rozważamy tutaj tylko jeden typ kodu parsera. tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) ---- funkcja do usuwania cudzysłowów w takich samych ilościach z prawej i z lewej strony danego fragmentu tekstu w nim; tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; </syntaxhighlight> Definicje tych funkcji znajdują się również w module: {{Code|{{ld2|Specjalne}}}}, które również przedstawiają inne funkcje do upraszczania tekstu, w tym nagłówka, ale nie tylko, bo dowolnego tekstu. === {{Śródtytuł|RefPrzypisowy}}{{Code|RefPrzypisowy}} === Mechanizm zamieniający kod referencji na jej wersję wyświetlaną na ekranie, czyli w nawiasie kwadratowym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local RefPrzypisowy=function(obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt-ref}} | _1 = Nazwa typu przypisu, czyli jak bez nazwy, czy też jak: '''uwaga'''. | 2 = {{Code|kod}} {{Patrz|kod-ref}} | _2 = Numer danego typu przypisu. }} Gdy {{LinkPatrz|obiekt-ref}} nie ma nazwy, wtedy w nawiasie kwadratowym będzie tylko numerek {{LinkPatrz|kod-ref}}, a jeśli ma nazwę, to nazwa oddzielona spacją z prawej strony, a po nim jest ten numerek. === Dalsza część funkcji - Tom I === Tutaj opowiemy o części wstępnej tej funkcji. ==== Ustalanie zmiennej nazwy modułu aktualnej, czy bieżącej ==== Funkcja ustawia zmienną: {{Code|czy_kodowanie}} {{Patrz|czy_kodowanie}}, na podstawie istnienia zmiennych: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} i {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Wyznaczanie nazwy modułu aktualnej, czy bieżącej, dla strony aktualnej, jeśli ona nie istnieje ==== Jeżeli zmienna {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} jest odpowiadającej wartości fdałszywej i mamy strona korzystaną, co określa parametr {{LinkPatrz|czy_artykul_korzystany}}, w postaci wartości prawdziwej, wtedy są liczone kolejne zmienne nazw na podstawie istnienia lub nieistnienia zmiennej {{Code|alternatywna}}, a jeśli ona jest prawdziwa, wtedy wybierane są zmienne z tą aktualną nazwą woluminu wynikłe z {{LinkZobaczTeż|strona_aktualna}}, przeciwnie z nazwą bieżącą woluminu,na podstawie tego, co wyświetla '''Stronicowy Parser''', te nazwy są ze sobą łączone, wtedy powstaje pełna nazwa strony, którą przyrównujemy do {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. Jeśli wartość {{LinkPatrz|czy_artykul_korzystany}} jest jednak fałszywa, w takim razie jest liczona {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}} na podstawie wartości {{LinkPatrz|nazwa_strony}}. ==== Kodowanie '''HTML''' specjalnych znaków strony ==== Nazwę strony {{LinkPatrz|nazwa_strony}}, w której mogą występować specjalne znaki, które są niezrozumiałe z punktu widzenia '''HTML''', jeżeli np.z nich trzeba zbudować identyfikatory '''id''', a więc trzeba je zakodować, robimy to funkcją: {{Code|{{sr|#p.EncodeId|p=Html}}}}. ==== Zwracanie funkcji liczenia numeru nagłówka ==== Wyznaczamy funkcję: {{Code|HNumer}} {{Patrz|HNumer}}, która jest efektem zwrócenia przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}. ==== Zamienianie szablonów nagłówków, czy nawet tych znaczników, na rozdziały równaniowe ==== Jeśli {{LinkPatrz|czy_kodowanie}} przyjmuje wartość prawdziwą, wtedy definiujemy funkcję: {{LinkŚródtytuł|SpecjalneWprowadzeniaTekstu}}. Dalej funkcja zamienia szablony: {{s|SpisTreści}} i {{s|HNumer}}, a także znaczniki: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, na ich wersję równaniową, aby dało się je rozpoznać jako rozdziały i było je łatwo wsadzić do szablonu takiego jak: {{s|Spis treści}} i inne podobne, za pomocą dwóch kolejnych funkcji wsadzonych do pewnej funkcji modułu {{m|Szablonowe}}, która służy do operacji na takich przypadkach. === Zmienna strony z nagłówkami === Gdy jest podana zmienna: {{Code|tylko_naglowek}} {{LinkPatrz|tylko_naglowek}}, ma wartość prawdziwą, wtedy zmienna: {{Code|nazwa_strony_z_naglowkami}} {{Patrz|nazwa_strony_z_naglowkami}}, przybiera wartość pustą, przeciwnie gdy zmienna {{Code|nazwa_strony}} {{LinkPatrz|nazwa_strony}} jest ciągiem pusty, wtedy to samo, w innym pozostałym przypadku jest to dokładnie {{LinkPatrz|nazwa_strony}}, gdzie przed nim znajduje się dwukropek {{Code|:}}. === Dalsza część funkcji - Tom II === Tu powiemy coś o iteratorze, który po zebraniu danych zwraca zmienną {{Code|nil}}, co odpowiada dla pętli, jej przerwaniu. ==== Definicja iteratora zbierania informacji o stronie ==== Aby uruchomić pętle na rzeczywistych danych zakodowanej, czy nie, stronie, trzeba otrzymać zmienną pętli {{Code|iterator}} {{Patrz|iterator}} i go wywoływać bezparametrowo w każdym okrążeniu pętli, aby tak się stało, to trzeba uruchomić funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, na tekście {{LinkPatrz|tekst_artykulu}}, traktując tekst, jakby nie był taki zakodowany, bo tutaj jedynie się liczą elementy niezakodowane, czyli w tym przypadku nagłówki z tekstem rozdziału. ==== Zbieranie informacji o stronie w pętli generowanej przez iterator ==== Będziemy tutaj opisywali pętlę generowaną przez jego iterator {{LinkPatrz|iterator}}. W każdym okrązeniu pętli otrzymujemy dane: {{OpisParametrów | 1 = {{Code|naglowek_tab}} {{Patrz|naglowek_tab}} | _1 = Gdzie pierwszy jego element to {{Code|naglowek}} {{LinkPatrz|naglowek}}. | 2 = {{Code|text_rozdzialu}} {{Patrz|text_rozdzialu}} | _2 = Tekst rozdziału. | 3 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _3 = Poziom rozdziału. }} ===== Definicja nowe wartości zbierania uchwytów nagłówka w zmiennej numeracji ===== Deklaracja zmiennej {{Code|numeracja}} {{LinkPatrz|numeracja}} jest na zewnętrz pętli, w niej tworzymy jej nową wartość, którą jest tablica pusta. ==== Uzyskiwanie informacji z tekstu rozdziału nagłówka, i jego możliwych uchwytach, w poszczegolnym okrążeniu pętli, i zrzuceniu tam pojedynczego kodu problemu ==== Jeżeli {{ZobaczTeż|text_rozdzialu}} tekst strony jest zakodowany, to iterujemy po tekście {{LinkPatrz|text_rozdzialu}} w poszukiwaniu kodów bazy kodów zakodowanego tekstu, w tym celu wywołujemy pętlę: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, wtedy uzyskujemy trzy obiekty w każdym przebiegu pętli, tzn. {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, za pomocę tego uruchamiamy funkcję: {{LinkŚródtytuł|SzablonNaglowkujWTekscieRozdzialu}}. Jeżeli funkcja napotkała uchwyt szablonu: {{Code|{{s|Śródtytuł}}}}, wtedy jest zatrzymywana, w takim razie mamy informację o wystąpieniu niedozwolonego szablonu nagłówka w tekście. A jeżeli takiego szablonu tam nie ma, to układ iterator {{LinkPatrz|iterator}} iteruje aż do zakończenia danych. ==== Uzyskiwanie nagłówka i do niego identyfikatora '''id''' ==== ===== Tekst niezakodowany nagłówka ===== Gdy tekst nie jest zakodowany, wtedy zmienna: {{LinkPatrz|czy_kodowanie}}, ma wartość odpowiaadające fałszywej, wtedy dla tego nagłówka {{LinkPatrz|naglowek}} jest uruchamiana funkcja: {{Code|{{sr|#p.["PrzetwórzNagłówek"]|p=Specjalne}}}}, wtedy otrzymujemy dwie wartości: {{Code|nazwa_rozdzialu_w_artykule}} {{Patrz|nazwa_rozdzialu_w_artykule}} - zmienna idententyfikatora, {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna nagłówka. Te dwie zmienne zostały maksymalnie rozwinięte, zostały przystosowane do tego, aby słuzyły do tego, co trzego zostały stworzone. ===== Tekst zakodowany nagłówka ===== Gdy jednak {{LinkPatrz|czy_kodowanie}} przyjełajednak wartość fałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}, z której otrzymujemy: {{Code|naglowek}} {{LinkPatrz|naglowek}} - zmienna przetworzonego i maksymalnie rozwiniętego nagłówka, oraz zmienne funkcje: {{LinkPatrz|Znaczniki}}, {{LinkPatrz|SzablonyStylowe}} i {{LinkPatrz|ZnakiSpecjalne}}. Na podstawie defiicji: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, mamy: {{Code|naglowek}} {{LinkPatrz|naglowek}}. ====== Kompletowanie nagłówka ====== Ten nagłówek kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, usuwając szablony indeksowania {{LinkTbl|p.szablony_indeksowania}}, a także znaczniki: {{Tag|li}}, {{Tag|ul}} i {{Tag|ol}}. ====== Kompletowanie identyfikatora nagłówka ====== Kompletując: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, rozwijamy wszystko, oprócz atrybutów, {{Code|obiekt}} {{Code|{{=}}}} {{Code|ATRYBUTY}}, a na szablonach wywołujemy funkcję: {{LinkŚródtytuł|SzablonyWywolywaneOgolny}}. Na identyfikatorze nagłówka {{LinkPatrz|nazwa_rozdzialu_w_artykule}} Wywołujemy kolejno lokalne funkcje: {{LinkPatrz|SzablonyStylowe}} - do usuwania rozwiniętych kodów stylów, {{LinkPatrz|ZnakiSpecjalne}} - do usuwania cudzysłowów, i {{LinkPatrz|Znaczniki}} - do usuwania znaczzników. ====== Gdy w kodzie identyfikatora nie ma symbolicznych szablonów ====== W tym przypadku uruchamiamy fukcję do dekodowania znaków '''HTML''', tzn. dziesiętnych, szesnastkowych i literowych, funkcją: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, a później kodujemy specjalne znaki identyfikatora sposobem: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, przy pomocy kodów '''HTML''' dziesiętnych. ===== Usuwanie zbędnych znaków w identyfikatorze ===== Usuwane są potrójne i podwójne cudzysłowy {{Code|'}} oraz odstępy i dolne myślniki na końcach łańcucha, a wewnętrz jego kolejne je są zastępowane jedną spacją. ===== Referencje i wzory matematyczne ===== Referencje są zastępowane odpowiednio przy pomocy funkcji: {{LinkŚródtytuł|RefPrzypisowy}}, a wzory matematyczne, dla obiektów typu {{Code|POSTMATH}} {{Patrz|POSTMATH}}, które są zastępowane prawidłowo poprzez: {{LzLua|mw.text.encode}}, przy pomocy: {{Code|{{sr|#p.NormaKoduZakodowanegoHtmlTekstu|p=Szablonowe}}}}, obiektem: {{Code|postMath}} {{Patrz|postMath}} z ośmioma znakami cyferkami na końcu tego, którym jest {{Code|kod}} {{LinkPatrz|kod}}. ===== Wstępne przygotowanie identyfikatora do końcowego skutecznego użytku ===== Dla danego identyfikatora one mogą się powtarzać, a identyfikator musi być unikalny, zatem trzeba napisać ich dodatkowe numerki, po policzeniu otrzymamy {{Code|numer_tego_samego_naglowka}} {{Patrz|numer_tego_samego_naglowka}}. ====== Tablica identyfikatora i nagłówka ====== Funkcja wykorzystuje tablicę: {{Code|tablica_powtarzajacych_sie_elementow}} {{Patrz|tablica_powtarzajacych_sie_elementow}}, aby policzyć numer powtarzającego się identyfikatora '''id'''. Dla {{LinkPatrz|numer_tego_samego_naglowka}} równego {{Code|1}}, tworzemy tablicę {{Code|elementy_linku}} {{Patrz|elementy_linku}}, którego pierwszym elementem jest: {{LinkPatrz|nazwa_rozdzialu_w_artykule}}, a drugim nagłówek {{LinkPatrz|naglowek}}, a w przypadku tego numerku innego niż podana liczba, to dajemy do identyfikatora na końcu ten numerek po dolnym myślniku. ====== Uzupełnianie zmiennej do identyfikacji uchwytu z odpowiednim nagłówkiem ====== Jeśli: {{LinkPatrz|obiekty}} i {{LinkPatrz|numeracja}}, istnieją, wtedy do tej pierwszej tablicy dodawane są wszystkie elementy o takim samym typie z {{LinkPatrz|numeracja}}. To dodawanie na końcu tablicy przedstawia się: <syntaxhighlight lang="lua"> for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; </syntaxhighlight> ====== Tworzenie tablicy nagłówkami i indetyfikatorami ====== Jeśli {{Code|poziom_rozdzialu}} jest większy od zera, tzn. {{Code|> 0}} {{ZobaczTeż|>0}}, wtedy liczymy numer rozdziału przy pomocy funkcji: {{Code|HNumer}} {{LinkPatrz|HNumer}} liczony z: {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}, tworząc w ten sposób wynik w postaci zmiennej {{Code|numer_rozdzialu_ustalony}} {{Patrz|numer_rozdzialu_ustalony}}. {{HNumer|1= ======= Rozdziały ewentualnie powtarzające się ======= }} Na sam koniec tablicy: {{Code|tablica_powtarzajacych_sie_elementow}} {{LinkPatrz|tablica_powtarzajacych_sie_elementow}}, dodajemy element identyfikatora '''id''' bez numerka, tzn.: {{Code|nazwa_rozdzialu_w_artykule}} {{LinkPatrz|nazwa_rozdzialu_w_artykule}}. {{HNumer|1= ======= Tablica spisu treści ======= }} Jest tworzona tablica spisu: {{Code|tablica_spisu_tresci}} {{Patrz|tablica_spisu_tresci}}, jako pusta tablica, z później dodanym elementem o kluczu: {{Code|nazwa_strony}} {{Patrz|tablica_spisu_tresci.nazwa_strony}}, którym jest o wartości: {{LinkPatrz|nazwa_strony_z_naglowkami}}. Do tablicy: {{LinkPatrz|tablica_spisu_tresci}}, dodawane są elementy według schematu: <syntaxhighlight lang="lua"> tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; </syntaxhighlight> === Dalsza część funkcji - Tom III === Będziemy się tutaj zajmowali z tekstem przed pierwszym rozdziałem na stronie. ==== Nagłówek na samym początku strony ==== Gdy kodowanie jest jednak włączone, tzn.: {{LinkPatrz|czy_kodowanie}}, jest prawdziwe, i mamy artykuł korzystany, tzn.: {{LinkPatrz|czy_artykul_korzystany}}, i zaprzeczenie wyłowania funkcji: {{LinkPatrz|CzyJestTakiProblemJakoElementTablicy}}, przyjmuje wartość prawdziwą, to jeśli na samym początku znajduje się rozdział, wtedy funkcja zwraca wynik: {{LinkPatrz|tablica_spisu_tresci}}. ==== Tekst przed pierwszym rozdziałem ==== Wyznaczamy ten tekst, który będzie ukrywał się pod zmienną: {{Code|tekst_zerowy}} {{Patrz|tekst_zerowy}}, który jest tekstem przed pierwszym rozdziałem lub samym tekstem zakodowanego wikikodu {{Code|tekst_artykulu}} {{LinkPatrz|tekst_artykulu}}. ===== Szablony nagłówka w tekście zerowym ===== W tym tekście iterujemy jak w punkcie: {{LinkZobaczTeż|text_rozdzialu}}, tylko zamiast {{LinkPatrz|text_rozdzialu}} jest {{LinkPatrz|tekst_zerowy}}. === Dalsza część funkcji - Tom IV === Zwracaną wartością tej funkcji jest: {{Code|tablica_spisu_tresci}} {{LinkPatrz|tablica_spisu_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fmqpz6glkmxfncd4i8xk8eu7ns4ws75 Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom I 4 63522 560419 560310 2026-11-01T11:52:25Z Persino 2851 560419 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne == === {{Śródtytuł|Ile}}{{Code|Ile}} === Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach {{ZobaczTeż|przetłumaczone rozdziały}} przetłumaczonych na małą literę, ale przedtem na niego była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spację. Metafunkcja, w metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}, by zaliczyć je do tego typu: {{Tbl|uchwyt=p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|tekst= <syntaxhighlight lang="lua"> p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={ ["licencja"]=true, ["inne"]=true, ["bibliografia"]=true, ["zobacz też"]=true, ["linki zewnętrzne"]=true, }; </syntaxhighlight>}} Musimy wykorzystać tak przetłumaczone rozdziały {{LinkZobaczTeż|przetłumaczone rozdziały}}, przy pomocy tej metatabelki, czy one zgadzają się z tą tablicą. Te rozdziały należą do kategorii rozdziałów, w których artykuły są pomijane przez: '''{{ld|StronicowyParser|Stronicowy parser}}''', ale jeżeli one należą do rozdziału spisu treści lub rzeczy, to tam jednak nie są takie, inaczej jest poza. A od: {{Code|7}} do {{Code|13}}, znajdują się podtabele z artykułami, które już należą już tam, czyli wtedy te drugie {{Code|6}} tabel. A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|numer_rodzaju_artykulu}} | _1 = Numer podtabeli elementtu, do którego wsadzamy element. | 2 = {{Code|tabela_rozdzial_artykulow2}} | _2 = Tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}. }} === {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} === ==== Opis pobieżny funkcji ==== Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}. Funkcja zwraca pozycje: <syntaxhighlight lang="lua"> return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych; </syntaxhighlight> Opis tych parametrów funkcji: {{OpisParametrów | 1 = {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} | _1 = Jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}, | 2 = {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} | _2 = Pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}. | 3 = {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} | _3 = Tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłówkiem, a gdy niema tego bez, to wtedy dzięki tej funkcji numeracja tak się zachowuje, jak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest. }} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}. | 2 = {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} | _2 = Opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Funkcja jest wywoływana w: <syntaxhighlight lang="lua"> numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow); </syntaxhighlight> Gdzie funkcja: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, to jest: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}. | 3 = {{Code|tabela_rozdzial_artykulow2}} | _3 = Ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}. | 4 = {{Code|tablica_artykulow_zebranych}} | _4 = Diała jak w: {{LinkPatrz|tablica_artykulow_zebranych}}. | 5 = {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} | _5 = Jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}. | 6 = {{Code|szablon}} {{Patrz|szablon}} | _6 = Jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu. | 7 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - | _7 = Kolejno to jest: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''. | 8 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _8 = Jest to nazwa artykułu danego spisu treści. | 9 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _9 = Uchwyt do bazy kodowania tekstu strony spisu treści. | 10 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _10 = Nazwa strony szablonowa, jak są wywoływane w postaci szablonowej, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}. | 11 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _11 = Uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 12 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _12 = Tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}}. | 13 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _13 = Tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}. | 14 = {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} | _14 = Obiekt i kod, czyli: zmienne charakteryzujące zmienną wnętrza: {{Code|szablon}} {{LinkPatrz|szablon}}. | 15 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _15 = Tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy. | 16 = {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} | _16 = Tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię. | 17 = {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} | _17 = Numeracja rozdziału, z jakim rozpoczyna się rozdział. | 18 = {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} | _18 = Gdy link znajduje się w rozdziale dodatnim. | 19 = {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} | _19 = Cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni. }} ==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ==== Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}, | 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, | 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}. }} Ta funkcja została opisana już wcześniej. ==== Szczegółowy opis funkcji głównej ==== Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zdefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję: <syntaxhighlight lang="lua"> local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> Pierwszy zwracanym elementem: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe, drugi: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to: {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to: {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to: {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany został poprawnie do rozważań, a {{Code|true}} już nie. To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.: <syntaxhighlight lang="lua"> local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,}; </syntaxhighlight> Elementy tablicy: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych. | 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = To jest nazwa uzyskanego szablonu linków inteligentnych lub nie. | 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela modyfikatorów rozkładanego szablonu. }} Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne, które należą do pewnych rozdziałów i które nie należą. ===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} ===== Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem: {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}}, jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{LzLua|mw.ustring.match}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> ParametrPierwszy(tab_artykul,czy_niedozwolone)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tab_artykul}} | _1 = Jak w: {{LinkPatrz|tab_artykul}}. | 2 = {{Code|czy_niedozwolone}} | _2 = Jak w: {{LinkPatrz|czy_niedozwolone}}. }} Gdzie: {{Code|tab_artykul}} {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów: <syntaxhighlight lang="lua"> local artykul=tab_artykul[1]; local parametry=tab_artykul[2]; local naglowek=tab_artykul[3]; local tablica_przekierowania=tab_artykul[4]; </syntaxhighlight> Jeżeli, któreś z parametrów z: {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem: {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwarty to jest: {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy: {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}}, lub łańcuch znakowy, w postaci: <syntaxhighlight lang="lua"> tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul; </syntaxhighlight> Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== Rozwijanie nazwy linku artykułu ===== Do rozwijania nazwy linku służy funkcja: {{Code|{{sr|#p.DekodowanieTekstuNazwLinku|p=StronicowyParser/Pomocne}}}} {{Patrz|p.DekodowanieTekstuNazwLinku}}, pod względem szablonowym i nie tylko. Funkcja rozwija tą nazwę tym: {{LzLua|frame:preprocess}}, jedynie nie rozwija szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod, bo to by wywołało nieskończoną pętle, i dlatego takie szablony są zamieniane tylko na wywołania symboliczne. ==== Dalszy opis funkcji nadrzędnej przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ==== ===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} ===== Tworzony jest numerek: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji: <syntaxhighlight lang="lua"> local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1; </syntaxhighlight> ====== Tworzenie tablicy: {{nobold|{{Code|tablica_artykulow_zebranych}}}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, nie jest tablicą{{dk}} Gdy element pierwszy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone: {{Code|wzor_znaki_niedozwolone}} {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę: {{ZobaczTeż|tablica_artykulow_zebranych-inicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Gdy element{{dk}} {{nobold|{{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}}}, jest łańcuchem znaków{{dk}} Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}: <syntaxhighlight lang="lua"> tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true); </syntaxhighlight> ; Inna książka - atrybut, tzn. czy artykuł wychodzi poza daną książkę, lub jego przekierowanie w niej kieruje na stronę poza nią{{dk}} Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn.: {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}: <syntaxhighlight lang="lua"> local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil; </syntaxhighlight> ; Tablica przekierowania artykułu względem bieżącej książki{{dk}} Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w: {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według: <syntaxhighlight lang="lua"> czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); </syntaxhighlight> Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą. Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkZobaczTeż|tablica_artykulow_zebranych-inicjacja}}. ; Tablica zebranych artykułów i porównywanie artykułu z nagłówkiem, czy istnieje wcześniejszy artykuł bez niego{{dk}} Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}, jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkZobaczTeż|tablica_artykulow_zebranych-inicjacja}}, w przypadku pierwszego artykułu nienagłówkowego. A w przypadku pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie istnieje, a więc tego tam nie ma tam w takim przypadku. Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez definiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że artykuł jest ten sam, tylko inny nagłówek niż poprzedni, a poprzedni pierwszy jest bez niego. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację. ====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ====== A między czasie, gdy mamy niedozwolone znaki: {{Code|znaki_niedozwolone}} {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. ====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ====== Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli: {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według: <syntaxhighlight lang="lua"> ---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka; local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false); ---- Inicjowanie starej wartości tą policzoną; local stara_nazwa_jednostki=nazwa_jednostki; </syntaxhighlight> Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow2|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end; </syntaxhighlight> Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według: <syntaxhighlight lang="lua"> linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> ====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ====== Gdy tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, istnieje, wtedy sprawdzamy, czy zmienna logiczna: {{Code|czy_tablica}} {{LinkPatrz|czy_tablica}}, jest prawdą i czy: {{Code|stara_nazwa_jednostki}} {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element: {{Code|<nowiki>[2]</nowiki>}}, przydzielany jest do zmiennej: {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli parametrów nazwy artykułu przekierowania. Inicjujemy nową zmienną: {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}}, z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według: <syntaxhighlight lang="lua"> przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,} or przekierowanie) or nil; </syntaxhighlight> Tworzony jest nowy element: {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}}, z: {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu: <syntaxhighlight lang="lua"> nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,}; </syntaxhighlight> Jeżeli parametr drugi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest: {{Code|false}}, wtedy kreujemy tablicę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}. Wsadzamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do zbioru: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, według funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, którego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli tablica przekierowania: {{Code|tablica_przekierowania}} {{LinkPatrz|tablica_przekierowania}}, jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie. ====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ====== Tworzymy zmienną: {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}}, z drugiego elementu tablicy: {{Code|tablica_artykulow_zebranych}} {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną: {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem: <syntaxhighlight lang="lua"> local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil; </syntaxhighlight> Tą zmienną wykorzystamy do sformułowania: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycji: {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, przy pomocy funkcji: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} ===== Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku. ====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ====== * Gdy pierwszy element tablicy: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z tego, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według funkcji: {{LinkPatrz|p.DekodowanieTekstuNazwLinku}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu, to jest kolejno kod języka i projektu, z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej. ====== Przygotowanie zmiennych, inicjowanie tablicy: {{Code|tab_stare}}, i wsadzanie jej do tablicy ogólnej: {{Code|tabela_rozdzial_artykulow2}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow2}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}. {{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ==== Przedstawiamy tutaj ogólną definicję zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Ta wersja jest jedynie sformułowana dla artykułów w rozdziale, a nie dla rozdziałów, bo w tablicy, do której jest ona wsadzana przyjmuje ona możliwy numerek od "2" do "13", a nie również "1". Jej wersja ogólna: <syntaxhighlight lang="lua"> local tab_stare= { ---- Początek elementów alternatywnych { ---- Początek wersji dla artykułu tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku; ---- lub { tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka; tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku; tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony; ["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem; }, ---- Koniec wersji dla artykułu tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego; ---- Początek elementów alternatywnych dla przekierowania ---- Początek parametrów przekierowania { tablica_przekierowania[2], -- nazwa przekierowania artykułu; tablica_przekierowania[3], -- parametry przekierowania artykułu; tablica_przekierowania[4], -- nagłówek przekierowania artykułu; ["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem; }, ---- lub tablica_przekierowania[2], -- nazwa przekierowania artykułu; ---- Koniec parametrów przekierowania tablica_przekierowania[1], -- tablica o definicji, którego przedstawienie: { nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu; nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu; nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu; true/false, -- true - gdy strona jest przekierowaniem, gdy strona główna jest taka, lub przekierowanie wskazuje na tą samą książkę, chociaż ono jest w innej; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie, -- (true/false): true - gdy strona, nie główna podręcznika, jest przekierowaniem, false - jak nie, to strona główna książki; }; -- koniec przedstawienia; ---- lub nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil; nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil; ---- Koniec elementów alternatywnych dla przekierowania tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka; tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu; tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym; ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach; tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link; }, ---- lub tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie; ---- lub { tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka; tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku; tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony; ["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem; }, ---- Koniec elementów alternatywnych { #przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą, w innym wypadku dla artykułu znajdującego się w rozdziale dodatnim, czy ujemnym jest zero; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])", przeciwnie dla artykułów w rozdziale dodatnim ma wartość pustą; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu, gdy nie ma takiej numeracji, bo nie da się jej wydzielić, to ma wartość pustą; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym, wtedy "true", w przeciwnym wypadku: "false"; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/false, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: false; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika, przeciwnie: false; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale; ---- lub nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą; ---- Koniec elementów alternatywnych }; </syntaxhighlight> W powyższym: {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu: {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy. == Funkcje tablicy transportu == === {{Śródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletuje i przekształca go w odpowiedni sposób, aby otrzymać czysty tekst tytułu rozdziału. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|rozdzial}} | _1 = Ten tekst tytułu rozdziału, o którym mówimy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci}} | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. }} ==== Obiekty typu {{nobold|{{Code|SZABLON}}}} ==== Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla: {{Code|obiekt {{=}} "SZABLON"}}, używamy pierwsze dwie tabelę, te tabele: Pierwsza, która służy do zamieniania szablonów na ich parametry, tutaj pierwsza, to jest tablica: {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: {{tbl|uchwyt=p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight>}} Druga: {{Code|{{sr|#p.szablony_dozwolone_w_nazwach_linkowych|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. Funkcja wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja: {{Tbl|uchwyt=p.szablony_dozwolone_w_nazwach_linkowych|tekst= <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight>}} ===== Funkcje zawartości i dodatków, dla szablonów ===== One służą do zamieniania wywołań szablonowych na odpowiednie ich zawartości parametrów określone przez numery parametrów tych elementów w tych tabelach. Jeżeli przy którym wywołaniu przy wykorzystaniu kolejnych tych tabel przy użyciu funkcji: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, nastąpiło zamienienie, to funkcja pierwsza w: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, zakańcza się z tą wartością. A jeżeli nie to uruchamia się funkcja dodatków: {{Code|{{sr|#p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu|p=StronicowyParser/Rozdziały}}}}, a jeśli nastąpiło zastąpienie, to funkcja kompletowania się kończy z tą wartością. ===== Szablonowe linki ===== Dalej, jeżeli tak się nie stało, to uruchamia się funkcja parametrów, w którym wywołanie szablonowe jest rozkładane na nazwę szablonu, modyfikatory i parametry. Dalej jest sprawdzanie, czy jest to link inteligentny według funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, a gdy jest, to funkcja kończy swoje działania z nazwą tego linku lub jego adresem wewnętrznym, a jeśli on nie jest tym, to sprawdza, czy są inne szablonowe linki, które podejrzewa się, poprzez wywołanie funkcji: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoObiektu|p=StronicowyParser/Potrzebne}}}}, a jeżeli jest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny. A gdy nie, to w innym przypadku sprawdzane, czy to jest inny link wewnętrzny generowany przez szablony, które sprawdza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to funkcja składania zwraca jego nazwę linkową. ===== Szablony rozwijane przez {{lpg|JavaScript}} ===== A następnym krokiem jest sprawdzanie, czy nazwa szablonu jest jednych z elementów z tablicy: {{LinkTbl|p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}}, która ma ten element, te szablony wymienione w tej tablicy są po to, aby służyły do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser: {{Code|{{ld2|StronicowyParser}}}}, te nazwy szablonów są określone tablicą: {{Code|{{sr|#p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={ ["Cytuj"]=true, ["Cytuj stronę"]=true, ["Cytuj pismo"]=true, ["Cytuj odcinek"]=true, ["Cytuj książkę"]=true, ["Cytuj grę komputerową"]=true, }; </syntaxhighlight>}} I funkcja wtedy zwraca skompletowany szablon bez rozwijania jego, pod warunkiem, jeżeli jest tym szablonem o tej nazwę szablonu wywołującego. ===== Co jest zwracane w przypadku szablonów ===== Te powyżej elementy dla funkcji parametrów, w niej wartości są zwracane do niej, a jeżeli ona przyjmuje wartość nienilową, to do funkcji składania zwracana jest jego wartość, a przeciwnie jest zwracane pierwszy parametr szablonu do niej. ==== Obiekty typu: {{nobold|{{Code|NOWIKI}}}}, {{nobold|{{Code|PRE}}}} i {{nobold|{{Code|ŹRÓDŁO}}}} ==== A gdy dla elementów, jeśli nazwa obiektu jest: {{Code|obiekt {{=}} "NOWIKI"}}, {{Code|obiekt {{=}} "PRE"}}, lub: {{Code|obiekt {{=}} "ŹRÓDŁO"}}, znacznik jest rozkładany na czynniki pierwsze, a jeżeli nie ma zawartości, to przez funkcję składania jest zwracana wartość pusta, a jeśli nie, to pewne znaki specjalne tagu {{Tag|nowiki}}, które mają w nim być zamienione na tekst, są zamieniane na kody '''HTML''', co po tym, ta ona jest zwracana. ==== Obiekty typu: {{nobold|{{Code|MATH}}}}, {{nobold|{{Code|GALERIA}}}}, {{nobold|{{Code|MAPAOBRAZU}}}}, i {{nobold|{{Code|INNEPRE}}}} ==== A jeżeli wartość: {{Code|obiekt}}, jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy zawartość zmiennej: {{Code|szablon}}, jest wykorzystana przez funkcję z modułu: {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej usuwa komentarze według: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}. Zamieniane są w nim linki zewnętrzne i wewnętrzne na ich nazwy lub adresy według: {{Code|{{sr|#p["ZamieńLinkiZewnętrzneNaTekst"]|p=Specjalne}}}} i {{Code|{{sr|#p["ZamieńLinkiWewnętrzneNaTekst"]|p=Specjalne}}}}. Są usuwane rozwinięte znaczniki szablonów stylów, używając do tego celu: {{Code|{{sr|#p["UsuńSzablonyStylów"]|p=Specjalne}}}}. To samo jest robione ze znacznikami na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są kasowane normalne kategorie nieszablonowe: {{Code|{{sr|#p["UsuńKategorie"]|p=Specjalne}}}}. Pozbywamy się, z zawartości, wywołań plików i interwiki, na podstawie: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. Dalej z tego obiektu są usuwane znaki specjalne na podstawie: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane zamiast nich wartości puste do funkcji kompletowania. Dane, z funkcji kompletowania, które są zwracane do niej, są usuwane w niej znaki specjalne z całości tekstu rozdziału: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu. Powtarzające się te znaki kolejne wewnątrz są zamieniane na jedną spację, to się dzieje według funkcji: {{Code|{{sr|#p["UsuńZbędneBiałeZnaki"]|p=Specjalne}}}}. Cały taki wynik operacji robiony w funkcji w nagłówku jest zwracany do niej, to jest, co uzyskujemy, nazwą rozdziału w postaci przetworzonej. === {{Śródtytuł|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji: {{nobold|{{Patrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ==== Funkcja służy do zbierania nagłówków i z niej danych, tzn. linków normalnych i inteligentnych, a także są zbierane nagłówki z listy bez artykułów i do nich elementy podlisty z artykułami w postaci wywołań linkowych w niej. Tworzona jest specjalnie dla tego tablica: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, która w odpowiedni sposób po przekształceniach wsadzana jest do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. | 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}. | 3 = {{Code|nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|nazwa_spisu_tresci}}. | 4 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _4 = Czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany. | 5 = {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} | _5 = Jest to wewnętrzny adres książki głównego spisu treści, jest to taki adres, na który wskazuje przekierowanie innej książki. | 6 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _6 = {{Śródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|tekst= Jest to funkcja, która zbiera informacje o aktualnym artykule, która jest spisem treści, w postaci nieprzetworzonej przez funkcje z modułu: {{Code|{{ld2|StronicowyParser/Rozdziały}}}}, opisanego w: {{Code|{{sr|Rozdziały|StronicowyParser - Rozdziały|p=StronicowyParser}}}}, ta funkcja kopiuje, np. tabele danych bazy modułu: {{Code|{{m|Szablonowe}}}}, tzn: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> __FUNKCJA_ZBIERANIA_DANYCH(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona); </syntaxhighlight> Funkcja nie zwraca niczego, jest funkcją, zwykłą bezwartościową procedurą, niezwracającą niczego. }} }} ==== Funkcje lokalne ==== Funkcja ma w sobie też definicję funkcji lokalnych zdefiniowanej w tej funkcji tutaj opisywanej. ===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} ===== Funkcja służy do pomijania tego, co nie jest linkiem wewnętrznym, czy zewnętrznym, czyli oznaczone kodami: {{Code|LINKW}} lub {{Code|LINKZ}}, czy nawet szablonem linku inteligentnego, czy innego służącego do generowania spisu treści, do tego celu również używa funkcji: {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}, oraz tego co nie jest w liście określonym wzorem: {{Code|<nowiki>\n([#:*;]+)</nowiki>}}, z możliwym na początku tekstem, ale nie z kodami, w danej pozycji listy, lub co ewentualnie nie może być w możliwej liście, tzn.: {{Code|<nowiki>\n([#:*;]*)</nowiki>}}, ale wtedy musi tam być z tekstem, ale nie z kodami, na początku danej pozycji listy, nawet jeśli to nie jest lista, to też tak samo. Jeżeli funkcja nie ma kodów linków wewnętrznych, czy to normalnych, czy szablonowych, to się zakańcza z wartością domyślną {{Code|nil}}, w przeciwnym wypadku do sprawdzenia używa do tego funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, do sprawdzania, czy to jest szablon linku, nawet licencji, a jeżeli ta funkcja zwraca wartość {{Code|true}}, to cała funkcja zwraca {{Code|nil}}. Jeżeli oba te sposoby nie dały rezultatu {{Code|true}}, to wtedy funkcja zwraca wartość pustą, czyli określonym ciągiem znakowym o szerokości zerowej. Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. }} ====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ====== Funkcja służy do sprawdzania, czy są odpowiednie szablony w kodzie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PomijajLinkiOrazLicencje(szablon)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. }} Funkcja sprawdza, czy to są szablony spisu treści określone tablicą o kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.szablony_licencji|tekst= <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight>}} Tzn., czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: {{Tbl|uchwyt=p.szablony_ozdobne_stron_woluminu|tekst= <syntaxhighlight lang="lua"> p.szablony_ozdobne_stron_woluminu={ ["MDL:RozszerzonyLink"]=true, }; </syntaxhighlight>}} A jeżeli to są te szablony, to funkcja zwraca wartość {{Code|true}}. Jeżeli jednak to nie są te szablony, należy użyć tablic, tak samo zbudowanej jak poprzednie, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.linki_szablony_elementy_spisu_rzeczy|tekst= <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>}} Lub innej, inaczej zbudowanej niż poprzednie, ale ważne, że ma wartość niefałszywą, czyli taką tablicą: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, jest: {{Tbl|uchwyt=p.inne_linki_szablony_elementy_spisu_rzeczy|tekst= <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight>}} Jak są te nazwy szablonów określone ich kluczami tych tablic, to funkcja zwraca wartość {{Code|true}}. A jeżeli jednak nie, to funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, jest sprawdzane, czy to jest link inteligentny, nawet przekierowanie, jeżeli link taki jest, to funkcja zwraca wartość w tym wypadku {{Code|true}}. W przeciwnym wypadku, jak nie zwrócił tej wartości, bo taka nie jest nazwa szablonu, to funkcja nic nie zwraca. ====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ====== Funkcja sprawdzająca za pomocą: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}}, na podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu: {{Code|obiekt}} {{LinkPatrz|obiekt}}, równym {{Code|SZABLON}}. A jeżeli funkcja ta wspomniana w tekście zwróci {{Code|true}}, to funkcja taki obiekt policzy. Jeżeli liczba policzonych obiektów i znalezionych w wyniku parsowania jest większa od zera, to funkcja w nagłówku zwróci wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local CzySzablonLinkLubLicencja=function(szablon)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. }} ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== Jest to funkcja iteratora, którego funkcja zwracana (iterator) zwraca parametry, dla rozdziałów dodatnich i pozycji list. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function iteratorTekstuNaglowka() ... ---- Kod przed zwróceniem iteratora; return function() ... ---- Ciało funkcji iteratora; end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Brak parametrów. | komórka1 = tak }} Iterator (funkcja zwracana przez funkcję w nagłówku) zwraca parametry w wyniku kolejnych wywołań: <syntaxhighlight lang="lua"> return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,true/false; </syntaxhighlight> Parametry zwracane przez iterator: {{OpisParametrów | 1 = {{Code|przedrostek_listy}} | _1 = Przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą. | 2 = {{Code|tekstowy_przedrostek}} | _2 = Numeracja pozycji w liście lub w nagłówku dodatnim. | 3 = {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} | _3 = Jest to rozdział bez numeracji i przedrostka pozycji listy. | 4 = {{Code|true/false}} | _4 = Wartość {{Code|true}} świadczy o rozdziale dodatnim, a w przypadku innym funkcja zwraca zawsze wartość tą {{Code|false}}, jako ostatni element zwracany. }} Funkcja jest przykowana na rozdziałów dodatnich i pozycji list oraz innych linii, dla tego pierwszego funkcja zwraca: <syntaxhighlight lang="lua"> return "","",wartosc,true; </syntaxhighlight> Gdzie {{Code|wartość}} jest to zawartość napisu wprowadzenia tekstu (rozdziału dodatniego). W przypadku list oraz innych niż rozdziały dodatnie samo wyrażenie regularne {{lpg|Lua}} w {{lpr|Lua|Scribunto}} jest okreslone przez wyrażenie: <syntaxhighlight lang="lua"> local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)"; </syntaxhighlight> Funkcja wykorzystuje funkcję: {{Code|{{sr|#p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu|p=StronicowyParser/Rozdziały}}}}, aby zamienić zawartość pozycji listy na rozdział bez numeracji i numerację, i dlatego ta funkcja zwraca te dwie wartości. Gdy funkcja jak nie znajdzie więcej linii (wyszukań), to zwraca wartość {{Code|nil}} mówiąca o zakończeniu iteracji iteratora, tzn. dane dla iteratora się zakończyły. ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== Funkcja dla szablonów kompletowania określonym tabelką: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, o definicji: {{Tbl|uchwyt=p.szablony_kompletowania_stron_woluminu|tekst= <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight>}} Rozdziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Pojedyncza przetworzona linia. }} ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy dane wywołania szablonu, ma swoją nazwę szablonu, która jest nazwą szablonu kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. }} ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kompletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinek dla obu wersji ustawień, jeśli potraktować układem link i szablon kompletowania, to wstawiany jest on pomiędzy tymi układami, aby rozdzielić na kolejne podlinie, w liście bez tych znaków pozycji. Dzielimy to na elementy przy pomocy funkcji: {{LzLua|mw.text.split}}, z opcją jako drugi parametr, aby uwzględniał wyrażenia regularne {{Code|false}}. W tych rozdzielonych linią tą funkcją dzielącą ciąg znakowy na tabelę, kody '''HTML''' przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinie, który można iterować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami, która uruchamiana jest inną w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} na pozycję {{Code|numer_podtablicy_w_tablicy}} {{Patrz|numer_podtablicy_w_tablicy}}, a dokładniej na: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, w funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana) return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare) ... ---- ciało funkcji. end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia}}. | 2 = {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} | _2 = Czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu. }} Parametry zwracanej funkcji przez tę w nagłówku: {{OpisParametrów | 1 = {{Code|tabela_rozdzial_artykulow2}} | _1 = Jak w: {{LinkPatrz|tabela_rozdzial_artykulow2}}. | 2 = {{Code|numer_podtablicy_w_tablicy}} | _2 = Jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}. | 3 = {{Code|tab_stare}} | _3 = Jak w: {{LinkPatrz|tab_stare}}. }} ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym początkiem z odstępami i po nim cudzysłowem, po którym następują liczby, litery, w takim przypadku linia nie może składać się z tego z początkiem z literami lub cyframi, czyli ze znakami alfanumerycznymi, a po nim ze znakami interpunkcyjnymi. Jeśli to sprawdzenie było pozytywne, funkcja zwraca wartość logiczną odpowiadającą {{Code|true}}, w przeciwnym wypadku jest zwracane {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Brak parametrów funkcji. | komórka1 = tak }} Funkcja zwraca informację, czy daną linię traktować jako rozdział, chodzi tu o pozycje list, a w przypadku rozdziałów dodatnich wiadomo, że one są właśnie, że rozdziałami. ====== Dalszy opis funkcji ====== Funkcja sprawdza w funkcji zwracanej, czy rozważany rozdział jest centrowany danego artykułu, który siedzi pod rozdziałem lub w samym rozdziale, sprawdza, czy artykuł jest w rozdziale, sprawdza, czy linia jest uwzględniana: {{Code|czy_linia_uwzgledniana}} {{LinkPatrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy w sekcji, czy w: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, czy istnieje element: {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}}, i dalszy: {{Code|tab_stare[2][1]}} {{Patrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}}, taki: {{Code|#przedrostek_listy}} {{Patrz|#przedrostek_listy}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. Wtedy do: {{Code|tab_stare[2][1]}} {{LinkPatrz|tab_stare[2][1]}} jest ikrementowany on o liczbę jeden, czyli: Dla każdej linii zmienna: {{Code|nowa_linia}} {{Patrz|nowa_linia}}, przyjmuje wartość {{Code|false}}, wtedy dla przypadku przeciwnego, tzn. gdy mamy rozdział i uwzględniamy artykuły w jednej linii, którym jest rozdział będący pozycją listy, w zmiennej: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest ustawiany element: {{Code|tab_stare[2][4]}} {{Patrz|tab_stare[2][4]}}, czyli zmienna: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, zaczyna przyjmować wartość {{Code|true}}. Wsadzany jest wtedy do tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, czyli to jest też: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, element {{Code|tab_stare}} {{LinkPatrz|tab_stare}}. Gdy: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, gdy jednak przyjmuje wartość {{Code|false}}, wtedy jeśli poziom rozdzialu istnieje lub przedrostek listy: {{Code|#przedrostek_listy}} {{LinkPatrz|#przedrostek_listy}}, jest większy od zera, i istnieje wiele artykułów w pozycji liście, wtedy: {{Code|ile>0}} (patrz na zmienną: {{Code|ile}} {{LinkPatrz|ile}}), lub funkcja: {{LinkŚródtytuł|CzyZaliczac}}, przyjmuje wartość odpowiadające prawdziwej, w taki przypadku zmiennej: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}}, przydzielamy wartość {{Code|true}}, by dalsze artykuły można było wsadzić, do tablicy z nowym rozdziałem. Powiększamy numer rozdziału o jeden, tzn.: {{Code|numer_rozdzialu_w_ksiazce}} {{Patrz|numer_rozdzialu_w_ksiazce}}, wtedy w zmiennej: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, tabeli rozdziałów i w nich artykułów dla tej pozycji przydzielamy wartość równą tablicy pustej. Liczymy dla tego rozdział z artykułami, z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, czyli obliczamy napis rozdziału, wtedy do pierwszej pozycji tablicy utworzonej w: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, dla miejsca: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, czyli: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, piszemy: <syntaxhighlight lang="lua"> tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,}; </syntaxhighlight> Gdzie: {{Code|rozdzial_na_tekst}} {{Patrz|rozdzial_na_tekst}}, to policzony rozdział, a {{Code|-#przedrostek_listy}} {{Patrz|-#przedrostek_listy}} to poziom rozdziału ujemnego, i dlatego minus. A: {{Code|przedrostek_listy}}, to znaki początkowe z listy: {{Code|wzor_do_linii_z_lista}} {{LinkPatrz|wzor_do_linii_z_lista}}, a: {{Code|tekstowy_przedrostek}}, to numeracja tego rozdziału. Wartość {{Code|false}} to jest ze ten rozdział nie jest centrowany, a: {{Code|linia}} {{LinkPatrz|linia}}, to wyzyskana linia bez początku pozycji listy. Ustawiamy: {{Code|tab_stare[2][4]}} {{LinkPatrz|tab_stare[2][4]}}, na wartość {{Code|true}} i element: {{Code|tab_stare[6]}} {{Patrz|tab_stare[6]}}, ustawiamy na zero. Tworzymy tablicę pustą na pozycję: {{LinkPatrz|numer_podtablicy_w_tablicy}}, tablicy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, i do tej tablicy dodajemy: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, za pomocą funkcji: {{LzLua|table.insert}}. A jeżeli nie jest tworzony nowy rozdział z listy w tabeli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, to na pozycję: {{Code|numer_podtablicy_w_tablicy}} {{LinkPatrz|numer_podtablicy_w_tablicy}}, jest dodawany element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, również tak jest robione, gdy artykuły znajdują się w rozdziale dodatnim, tzn. równaniowej lub centrowanej, tzn. wtedy: {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}, przyjmuje wartość {{Code|true}}. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== Za pomocą funkcji: {{LinkŚródtytuł|LiniaArtykulow}}, linia: {{Code|linia_rozwazana}} {{Patrz|linia_rozwazana}}, jest rozdzielana na wiele linii. To wiele linii w postaci tabeli, są iterowane od: {{Code|k {{=}} 1}}, do: {{Code|k {{=}} #tab_linia}}, gdzie: {{Code|#tab_linia}} {{Patrz|#tab_linia}}, jest to długość linii, tzn. liczba elementów numerowanych tablicy, tzn. od 1 do wzwyż aż do napotkania najbliższej przerwy lub końca. Wtedy dla pojedyńczej literacji mamy: {{Code|tab_linia[k]}} {{Patrz|tab_linia[k]}}. Iterujemy po kodach dla linii: {{Code|tab_linia[k]}} {{LinkPatrz|tab_linia[k]}}, przy pomocy funkcji: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|p.IteratorSzablonowyZakodowanegoTekstu}}, iteratorem: {{Code|iterator2}} {{Patrz|iterator2}}. Inicjujemy zmienną: {{Code|tab_nieobslugiwane {{=}} nil}}, następnie iterujemy: {{LinkPatrz|iterator2}}, uzyskując w każdej iteracji: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}. Gdy mamy do czynienia: {{Code|SZABLON}}, lub: {{Code|LINKW}}, albo: {{Code|LINKZ}}, wtedy dla elementów tego pierwszego bierzemy tablicę: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.inne_linki_szablony_elementy_spisu_rzeczy}}, dla elementu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}. Jeżeli ten element: {{Code|tabela_spisu}}, istnieje, element pierwszy: {{Code|tabela_spisu[1]}}, jest równy wartości {{Code|true}}, wtedy mamy do czynienia z szablonem {{s|SpisPozycja}}. Jej element: {{Code|tabela_spisu["numer_link"]}}, istnieje i jest równy: {{Code|tyt}} {{Patrz|tyt}}. Iterujemy po kluczach i jego wartościach tego szablonu i sprawdzamy, który element jest równy właśnie tej wartości, a jeżeli jest taki, to dla elementów nie równych niemu, a właściwie w jego wartości iterujemy po kodach funkcją: {{LinkPatrz|p.IteratorSzablonowyZakodowanegoTekstu}}, dla tej wartości, w ten sposób zbieramy tablicę wielowymiarową najpierw po: {{Code|obiekt}} {{LinkPatrz|obiekt}}, później po: {{Code|kod}}, {{LinkPatrz|kod}}, którą nazwiemy: {{Code|tab_nieobslugiwane}} {{Patrz|tab_nieobslugiwane}}, którego każda jej wartość jest równa {{Code|true}}. Ta tablica mówi dla jakich elementów ma nie zbierać w tablicy elementów w głównej tablicy rozdziałów i jego artykułach. Dla elementu {{Code|tyt}} {{LinkPatrz|tyt}} tablicy parametrów przedrostek listy {{Code|przedrostek_listy}} ustawiamy na pusty, i liczmy numerację {{Code|tekstowy_przedrostek}} i zmienną: {{Code|szablon}} {{LinkPatrz|szablon}}, i ustawiamy zmienną {{Code|przerwij}} {{Patrz|przerwij}} na {{Code|true}}, aby dla tego szablonu nie zbierać elementów w tablicy rozdziałów i jego artykułów. W przypadku przeciwnym dla: {{Code|tabela_spisu}}, gdy ma wartość {{Code|false}}, wtedy mamy do czynienia z funkcją: {{s|SpisZw}}. Dla niej liczymy: {{Code|przedrostek_listy}}, którą ustawiamy na pustą wartość. A: {{Code|tekstowy_przedrostek}}, liczmy uzyskując parametr o kluczu: {{Code|tabela_spisu["numer"]}}, którym jest parametr o numerze: {{Code|1}}, i {{Code|szablon}} {{LinkPatrz|szablon}}, który liczmy z parametrów szablonu o kluczu {{Code|tabela_spisu["link"]}}, którym jest numer {{Code|2}}. Ustawiamy tutaj zmienną: {{Code|przerwij}} {{LinkPatrz|przerwij}}, na wartosć {{Code|true}}. ====== {{Śródtytuł|CzyObslugiwane}}{{Code|CzyObslugiwane}} ====== Funkcja sprawdzająca, które elementy są obsługiwane, jeśli istnieje tablica: {{Code|tab_nieobslugiwane}} {{LinkPatrz|tab_nieobslugiwane}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local CzyObslugiwane=function()...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Brak parametrów. | komórka1 = tak }} ====== Dalszy opis funkcji ====== ; Uwzględnianie tablicy, reprezentujące artykuł w rozdziale, wstawiany do tablicy danego rozdziału{{dk}} Sprawdzany jest warunek: <syntaxhighlight lang="lua"> if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then </syntaxhighlight> Jeśli to nie jest spełnione, to sprawdzamy {{ZobaczTeż|link_szablon}}, czy jest zebrana licencja z autorem według zmiennej: {{Code|licencja_z_autorem}} {{Patrz|licencja_z_autorem}}, i sprawdzamy, czy: {{Code|szablon}} {{LinkPatrz|szablon}}, jest wnetrzem szablonu, jeżeli tak, to ono przyjmuje wartość odpowiadająca prawdziwej, przeciwnie ma fałszywą. Jeżeli jest on spełniony, wtedy wywołujemy funkcję: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, później dla: <syntaxhighlight lang="lua"> if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then </syntaxhighlight> Sprawdzamy, czy jest zrobione {{LinkZobaczTeż|link_szablon}}. ; Szablony licencji, i jego parametry, uwzględnianie jego tylko raz ca całą książkę, mieszcząca się w artykule głównej książki{{dk}} Następnie dla warunku, który musi być spełniony: <syntaxhighlight lang="lua"> if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then </syntaxhighlight> Sprawdzamy szablony licencji, takich jak: {{s|Licencja}}, według tablicy: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}}. Dla parametrów szablonu, liczymy jego parametry o kluczach, tzn.: {{Code|Autor}} {{Patrz|Autor}}, {{Code|Ukończone szkoły}} {{Patrz|Ukończone szkoły}}, {{Code|Email}} {{Patrz|Email}}, {{Code|Dotyczy}} {{Patrz|DotyczyDotyczy}}, {{Code|Licencjonowanie}} {{Patrz|Licencjonowanie}}, {{Code|Umowa prawna}} {{Patrz|Umowa prawna}} i {{Code|Konsekwencje}} {{Patrz|Konsekwencje}}, którego wartości przydzielamy do odpowiednich zmiennych. Każdą z tych zmiennych kompletujemy funkcją: {{Code|{{sr|#p.DekodowanieTekstuDekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, poprzez zwracaną przez nią funkcję, w której jest wykorzystywana: {{LzLua|frame:preprocess}}, do rozwijania. A dla elementu istniejącego: {{Code|Autor}}, piszemy zmienną: {{Code|licencja_z_autorem}} {{LinkPatrz|licencja_z_autorem}}, któremu przydzielamy wartość {{Code|false}}, co spowoduje, że nie będziemy analizowali jeszcze raz innego szablonu licencji. Te zmienne tego szablonu zbieramy natomiast w tablicy: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}, dane dotyczące licencji, więc: <syntaxhighlight lang="lua"> tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje}; </syntaxhighlight> Co później przerywamy pętle po: {{Code|iterator2}} {{LinkPatrz|iterator2}}, instrukcją: {{Code|break}}. ==== Dalszy opis funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ==== Ściągamy tekst, tabelę bazy i tabelę parametrów strony o nazwie: {{Code|nazwa_modulu}}, przy pomocy funkcji: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}, według: <syntaxhighlight lang="lua"> local __FUNKCJA_PARAMETRY=nil; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end,__FUNKCJA_PARAMETRY); </syntaxhighlight> Uruchamiamy funkcję: {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{LinkPatrz|__FUNKCJA_ZBIERANIA_DANYCH}}, jeżeli istnieje. Dalej wywołujemy funkcję: {{Code|{{sr|#p.IterTekst|p=StronicowyParser/Rozdziały}}}}, w celu znalezienia tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, i iteratora: {{Code|iterator}} {{Patrz|iterator}}, po napisach wprowadzenia tekstu rozdziałów i ich zawartości rozdziałów i na podstawie: <syntaxhighlight lang="lua"> local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, __FUNKCJA, ---- funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość; __FUNKCJA2, ---- funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału); __FUNKCJA_ANALIZA_SPISU ---- funkcja do analizy i modyfikacji tekstu (może zwracać wartość: nil) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: IterTekst, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: SpisTreści, co jest uwidocznione w module: Moduł:StronicowyParser/SpisTreści; ); </syntaxhighlight> Opis parametrów zwracanych: {{OpisParametrów | 1 = {{Code|iterator}} {{Patrz|iterator-IterTekst}} | _1 = Iterator po rozdziałach i jego zawartościach. | 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu-IterTekst}} | _2 = Tekst przetworzony rozdziału. }} Odczytujemy tabelę: {{LinkTbl|p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu}} i dalej: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}, o definicji: {{Tbl|uchwyt=p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|tekst= <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight>}} Robimy kopię tych tabel i przyłączamy do metatabeli: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, przy pomocy funkcji: {{LzLua|setmetatable}}, aby nie odrózniać tych rozdziałów ze względu na wielkość liter i polskie znaki. Inicjiujemy zmienną: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, wartością: {{Code|1}}, aby zbierać po kolei artykuły ze poszczególnego pojedynczego spisu treści. Ustawiamy maksymalny rozmiar rozdziału zerowego na {{Code|50}}, w zmiennej: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}, według: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=50; </syntaxhighlight> ===== {{Śródtytuł|AnalizaRozdzialu}}{{Code|AnalizaRozdzialu}} ===== Jest to funkcja do zbierania danych z pojedynczego rozdziału o pewnej linii, inicjowana z jego parametrami, także tekstem rozdziału. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _1 = Jest to tekst rozdziału. | 2 = {{Code|linia_rozdzialu}} {{Patrz|linia_rozdzialu}} | _2 = Jest to linia z rozdziałem. | 3 = {{Code|text}} {{Patrz|text}} | _3 = Jest to tekst rozdziału o pewnym napisie wprowadzenia tekstu. | 4 = {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}} | _4 = Jest to poziom danego rozdziału. | 5 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _5 = Początek pozycji listy rozdziałów '''mechanizmu {{NS|k=mw|l=tak|pk=d}}'''. | 6 = {{Code|numeracja}} {{Patrz|numeracja}} | _6 = Numeracja rozdziału. | 7 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _7 = Czy dany rozdział jest centrowany. }} ====== Tabela artykułów rozdziałów i w nich artykułów oraz jego poszczególnych ====== Tworzymy tabelę: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jeżeli nie istnieje, z pustą tablicą, a później dla elementu: {{Code|numer_rozdzialu_w_ksiazce}} {{LinkPatrz|numer_rozdzialu_w_ksiazce}}, jeżeli też go nie ma, to też pustą tablicą. Dalej liczymy napis wprowadzenia tekstu rozdziału dodatniego funkcją: {{LinkŚródtytuł|p.AnalizaNapisuWprowadzeniaTekstu}} i uwzględniamy je w tabeli rozdziałów dla danego rozdziału pod wartością: {{Code|tabela_rozdzial_artykulow[1]}}, w sposób: <syntaxhighlight lang="lua"> tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,}; </syntaxhighlight> Dalej wprowadzamy zmienną: {{Code|czy_spis_rzeczy_napis_wprowadzenia_tekstu}} {{Patrz|czy_spis_rzeczy_napis_wprowadzenia_tekstu}}, mówiącą, że rozpatrujemy rozdziały i artykuły w ramach spisu treści o nagłówkach typu: {{Code|Spis treści}}, czy: {{Code|SPIS RZECZY}}. Jeżeli wyszliśmy poza to, to ta zmienna, wtedy przyjmuje wartość fałszywą, a definicja inicjacji tej zmiennej jest: <syntaxhighlight lang="lua"> local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]); </syntaxhighlight> Gdzie: {{OpisParametrów | 1 = {{Code|poziom_rozdzialu}} | _1 = Jak w: {{LinkPatrz|poziom_rozdzialu}}. | 2 = {{Code|czy_jest_spis_tresci}} {{Patrz|czy_jest_spis_tresci}} | _2 = Czy jesteśmy w spisie treści. | 3 = {{Code|dalej_nie_rozwazaj_spis_tresci}} {{Patrz|dalej_nie_rozwazaj_spis_tresci}} | _3 = Zmienna mówiąca, że teraz jesteśmy poza spisem treści. }} ====== Kiedy uwzględniamy artykuły rozdziału ====== Jeżeli jesteśmy w spisie, to zawsze są uwzględniane artykuły rozdziału, bo jest ustawiona zmienna: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, na {{Code|true}}, a poza na {{Code|nil}}. Funkcja jest przyszykowana jest dla jednego spisu treści, o ściśle określonym specjalnym napisie wprowadzenia tekstu, w danym spisie na stronie. ====== Iterator linii artykułu spis treści ====== Uruchamiamy iterator, używając funkcji lokalnej: {{LinkŚródtytuł|iteratorTekstuNaglowka}}, według wywołania: <syntaxhighlight lang="lua"> local iterator=iteratorTekstuNaglowka(); </syntaxhighlight> Ustawiamy zmienną: {{Code|wliczaj_artykuly_tego_rozdzialu}} {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, aby wliczał lub nie, pewne artykuły rozdziału według: <syntaxhighlight lang="lua"> local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial])); </syntaxhighlight> Iterujemy otrzymanym ostatnio iteratorem, uzyskując kolejno zmienne: {{Code|przedrostek_listy}} {{LinkPatrz|przedrostek_listy}}, {{Code|tekstowy_przedrostek}} {{LinkPatrz|tekstowy_przedrostek}}, {{Code|linia}} {{LinkPatrz|linia}}, i {{Code|w_rozdziale}} {{LinkPatrz|w_rozdziale}}. ; Kiedy rozdziałów zerowych nie liczymy jako je{{dk}} Dla rozdziałów, które nie sa poziomami z listą, sprawdzamy, czy to jest rozdział zerowy przy pomocy funkcji: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, i sprawdzamy, czy on przekracza rozmiar: {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}, jeżeli jest tym rozdziałem i nie przekracza pewnego rozmiaru, to to jest rozdział traktowany jako zerowy niepomijany rozdział zerowy, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{Patrz|nie_pomijaj_tego_rozdzialu}}, na {{Code|true}}. ; A jeśli to są rozdziały z listy zaczynające się od dwukropka w linii{{dk}} Gdy taki rozdział nie pretenduje do zerowych, to sprawdzamy funkcją: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|p=StronicowyParser/Rozdziały}}}}, czy ten rozdział pominąć, a jeżeli ona przyjmuje wartość odpowiadającej fałszywej, czyli {{Code|false}}, wtedy ustawiamy zmienną: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, na taką samą wartość jak poprzednio. ; Inne rozdziały{{dk}} Dla rozdziałów innych ta wartość przyjmuje postać {{Code|false}}. ; Rozdziały jednak nie pomijane{{dk}} Ustalamy wartość {{Code|ile}} {{Patrz|ile}}, na wartość zero. Dla rozdziałów, które nie są pomijane, wtedy zmienna: {{Code|nie_pomijaj_tego_rozdzialu}} {{LinkPatrz|nie_pomijaj_tego_rozdzialu}}, przyjmuje wartość {{Code|true}}, w takim przypadku wchodzimy do funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami|p=Szablonowe}}}}, wtedy dla linków szablonowych sprawdzamy, czy to są linki określone tablicami: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.linki_szablony_elementy_spisu_rzeczy}}, {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.inne_linki_szablony_elementy_spisu_rzeczy}} lub ewentualnie funkcją: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}. Wtedy jeżeli jest to link, to ikrementujemy: {{Code|ile}} {{LinkPatrz|ile}}. Innym sposobem sprawdzania, czy to jest szablon linkowy jest tablica: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_kompletowania_stron_woluminu}}, lub {{Code|{{sr|#p.szablony_licencji|p=StroncowyParser/obiekty}}}} {{LinkTbl|p.szablony_licencji}}. Wtedy jest zwracane to: <syntaxhighlight lang="lua"> return czy_szablon,obiekt,kod; </syntaxhighlight> Jeżeli to jest szablon linków, wtedy jest zwracana wartość: {{Code|return true,obiekt,kod}}, w przeciwnym wypadku: <syntaxhighlight lang="lua"> return false,obiekt,kod; </syntaxhighlight> Innym sposobem liczenia, czy to jest link, to wtedy może być to link normalny: {{Code|LINKW}}, który można sprawdzić funkcją: {{Code|{{sr|#p["CzyLinkWewnętrzny"]|p=Specjalne}}}}, wtedy jest zwracane {{Patrz|gołe linki}}: <syntaxhighlight lang="lua"> return true,obiekt,kod; </syntaxhighlight> Link też może być zewnętrzny, wtedy to jest: {{Code|LINKZ}}, wtedy funkcja zwraca wartości {{LinkPatrz|gołe linki}}. ; Kiedy analizujemy artykuły rozdziału{{dk}} Następnie dla linii: {{Code|linia_rozwazana}} {{LinkPatrz|linia_rozwazana}}, co na podstawie tego liczymy, czy daną linię nie uwzględnić, w obliczeniach według schematu: <syntaxhighlight lang="lua"> local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$"); local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$") or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$")))) or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil); </syntaxhighlight> Co następnie jest ustawiana: {{Code|nowa_linia}} {{LinkPatrz|nowa_linia}} na wartość {{Code|false}}. ; Warunek analizowania artykułów rozdziałów{{dk}} W obliczeniach raz uwzględniamy funkcję: {{LinkŚródtytuł|AnalizaLiniiObiekty}}, w ostatniej omawianej pętli, schematycznie: <syntaxhighlight lang="lua"> if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end; </syntaxhighlight> ===== Dalsza część funkcji {{nobold|{{LinkPatrz|opis funkcji-ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}}} ===== Bierzemy zakodowany tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu-IterTekst}}, i po nim iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}, wtedy iterujemy po parametrach: <syntaxhighlight lang="lua"> local parsuj_rozdzialami=nil; ---- ta zmienna służy na wypadek, gdy by nie była żadnych rozwazanych rozdziałów; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ---- za każdym razem jest uruchamiana funkcja: AnalizaRozdzialu, przy rozważanym rozdziale; AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany); ---- oznacz zmienną: parsuj_rozdzialami, wartością; true, a póżniej jąnie inicjuj; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; </syntaxhighlight> Parametry zwracane przez iterator: {{Code|iterator}} {{LinkPatrz|iterator-IterTekst}}: {{OpisParametrów | 1 = {{Code|rozdzial_tab}} {{Code|{{=}}}} {{Code|<nowiki>{ [1] = rozdzial, [2] = linia_rozdzialu, }</nowiki>}} | _1 = tabela składająca się z dwóch elementów: | 2 = Pod elementy tabeli: | nagłówek2 = tak | 3 = {{Code|rozdzial}} | _3 = Jak w: {{LinkPatrz|rozdzial}}. | 4 = {{Code|linia_rozdzialu}} | _4 = Jak w: {{LinkPatrz|linia_rozdzialu}}. | 5 = Inne parametry: | nagłówek5 = tak | 6 = {{Code|text}} | _6 = Jak w: {{LinkPatrz|text}}. | 7 = {{Code|poziom_rozdzialu}} | _7 =Jak w: {{LinkPatrz|poziom_rozdzialu}}. | 8 = {{Code|poczatek_rozdzialu}} | _8 = Jak w: {{LinkPatrz|poczatek_rozdzialu}}. | 9 = {{Code|numeracja}} | _9 = Jak w: {{LinkPatrz|numeracja}}. | 10 = {{Code|czy_rozdzial_centrowany}} | _10 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany}}. }} Gdy nie napotkano żadnego rozważanego rozdziału, wtedy: {{Code|parsuj_rozdzialami}}, przyjmuje wartość {{Code|nil}}, w takim razie uruchamiana jest funkcja: <syntaxhighlight lang="lua"> if(not parsuj_rozdzialami)then AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil); end; </syntaxhighlight> Funkcja zwraca parametry inaczej, gdy artykuł, do którego należy książka jest korzystana, a inaczej, jeśli nie. W takim razie możemy zwracać na dwa sposoby: <syntaxhighlight lang="lua"> if(czy_artykul_korzystany)then return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci; else return tabela_artykulow,nil,przekierowanie_spisu_tresci; end; </syntaxhighlight> Przy artykułach korzystanych, co jest określone zmienną: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, tabelę: {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, przy jego spisach treści w książkach, do której należy ten artykuł, zwracana jest jako wartość przeważnie jako nierówna {{Code|nil}}, a dla artykułów z innych książkach, ta wartość już jest taka, tzn. przyjmuje wartość {{Code|nil}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 64b4eqbzz6qmzibpw8lj4xzy2h3iwya Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom II 4 63661 560420 559765 2026-11-01T11:55:55Z Persino 2851 560420 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === Funkcja sprawdzająca, czy na stronie z głównym spisem treści lub w innych spisach treści podanych w: {{s|Układ autonawigacji}} {{Patrz|Układ autonawigacji}}, na jednych ze stron: {{s|NawigacjaSpecjalna/Nawigacja/}} {{Patrz|NawigacjaSpecjalna/Nawigacja/}} (te ustawienia są wykorzystywane przez: {{s|Autonawigacja}} {{Patrz|Autonawigacja}}), dotyczącej danej książki, znajduje się artykuł o nazwie, z dokładnością do wielkości liter, artykuły o nazwach według tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}}}: {{Tbl|uchwyt=p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|tekst= <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight>}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_artykulow}} | _1 = Tabela wielowymiarowa rozdziałów i do nich artykułów. }} Kopia tej tabeli jest połączona z metatabelką: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=StronicowyParser/obiekty}}}} {{Patrz|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}}, przy pomocy funkcji: {{LzLua|setmetatable}}. Iterujemy po elementach tabeli: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}, a później sprawdzamy, czy artykuł znajduje się w dozwolonych rozdziałach jako artykuły książki: {{Code|tab_lista[2]}} {{Patrz|tab_lista[2]}}, iterując po jego elementach, wtedy jednych z jego wartości, o pewnym numerze, bierzemy element: {{Code|artykul_w_bazie_element}} {{Patrz|artykul_w_bazie_element}}, według kodu: <syntaxhighlight lang="lua"> ---- Bierzemy jego pierwszy element "tab_stare", bo: "artykul_w_bazie_element", jest tabelką; local artykul_w_bazie=artykul_w_bazie_element[1]; ---- Sprawdzamy, czy element, zawiera klucz o nazwie "["LINK"]=true"; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); ---- Wybieramy w zależnosci, czy to jest tabelka, czy nie bez tego: "["LINK"]=true"; artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; ---- Jeżeli ten element jest tabelką i posiada: "["LINK"]=true", to zwracamy pierwszy element, a jeżeli nie to sam element; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); </syntaxhighlight> Powyższy kod, zawiera funkcje z: {{Code|{{ld2|StronicowyParser/Potrzebne}}}}, tzn.: {{Code|{{sr|#p.CzyTabelaStronyWoluminuSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, która sprawdza, czy element jest tabelką, i czy ma klucz: {{Code|LINK}}, wtedy zwraca wartość: {{Code|false}}, w przeciwnym wypadku, zrzuca wynik, czy to jest owo (tabelka), i {{Code|{{sr|#p.TylkoNazwaStronyWoluminuZTabeliPublikacji|p=StronicowyParser/Potrzebne}}}}, który sprawdza, czy to jest tabelka, czy posiada klucz: {{Code|LINK}}, a jeżeli tak, to zwraca pierwszy element tej tabeli, a jeżeli nie, to zwraca, to nawet, gdy by nie była tabelką, a jak jest nią, to nie posiada klucza: {{Code|LINK}}. Aby zrozumieć te funkcje, skorzystaj z definicji: {{Code|tab_stare}} {{Patrz|tab_stare}}, na stronie: {{Code|{{lr|Moduły/StronicowyParser/SpisTreści/Tom I|SpisTreści - Tom I}}}}. Następnie sprawdzamy, czy to jest ten spis treści zagwarantowany według: {{LinkTbl|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a jeżeli tak, to funkcja zrzuca wartość: {{Code|artykul_bez_naglowka_w_bazie}} {{Patrz|artykul_bez_naglowka_w_bazie}} - jest to nazwa artykułu spisu treści o określonej nazwie bez nagłówka, a jeżeli mimo to, nie znaleziono nic, to nic nie zwraca. === {{Śródtytuł|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== Funkcja zrzuca wynik z jednego spisu rzeczy, którym jest strona główna książki, lub ewentualnie skojarzony z nią, spis, który jest artykuł o nazwie jednych z: {{LinkTbl|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, z dokładnością do wielkości znaków. Funkcja też sprawdza stronę z: {{s|Układ autonawigacji}}, czyli strony znajdujące się w katalogu: {{s|NawigacjaSpecjalna/Nawigacja/}}, tam sprawdza, jakie spisy do niego należą i je liczy, też sprawdza jakie artykuły do niego należą. W ten sposób mamy utworzony spis treści, który po artykułach książki możemy nawigować za pomocą odpowiednich funkcji autonawigacji. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa funkcji. | 2 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _2 = Kolejno jak w: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''' i '''nazwa książki'''. | 3 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _3 = {{Code|true}}, gdy artykuł dany jest korzystamy, czy aktualnie korzystamy z niego za pomocą przeglądarki. | 4 = {{Code|__FUNKCJA_SPISU_RZECZY}} {{Patrz|__FUNKCJA_SPISU_RZECZY}} | _4 = {{Śródtekst|bez preprocess=tak|uchwyt=__FUNKCJA_SPISU_RZECZY|tekst= Funkcja wykorzystywana w: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}, w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, jest to funkcja do różnych celu, w tym przypadku służy, to przypisywania, na które wskazuje przekierowanie, danych z przekierowania do strony, którym jest to właśnie przekierowanie. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> kod_sukcesu_lub_bledu=__FUNKCJA_SPISU_RZECZY(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis); </syntaxhighlight> Ta funkcja nie zwraca niczego. }} | 5 = {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} | _5 = {{P|Funkcja opisana w rozdziale: {{Code|{{sr|#p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy|p=StronicowyParser/SpisTreści/Tom I}}}}, w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.}} {{PobierzŚródtekst|uchwyt=__FUNKCJA_ZBIERANIA_DANYCH|nazwa artykułu=StronicowyParser/SpisTreści/Tom I}} }} ==== Funkcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== Funkcja służy do ustawiania poszczególnych spisów treści, jeżeli książka ma ich kilka. Ona służy jedynie do jednego spisu, a nie wszystkich razem, tylko oddzielnie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablista_artykulow}} {{Patrz|tablista_artykulow}} | _1 = Tabela rozdziałów i do nich artykułów. | 2 = {{Code|spis_tresci}} {{Patrz|spis_tresci}} | _2 = Jeżeli strona nie jest przekierowaniem, to jest wtedy łańcuch znakowy opisujący dany spis, a jeżeli właśnie jest, wtedy jest to tablica, coś w rodzaju {{Code|<nowiki>{przekierowanie_spisu_tresci,spis_tresci,}</nowiki>}}: | 3 = Wyjaśnienie: | nagłówek3 = tak | 4 = {{Code|przekierowanie_spisu_tresci}} {{Patrz|przekierowanie_spisu_tresci}} | _4 = Strona spis treści, która jest jednocześnie przekierowaniem. | 5 = {{Code|spis_treści}} | _5 = Jak w: {{LinkPatrz|spis_tresci}}, tylko, że tylko łańcuch znakowy, na który wskazuje przekierowanie. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|tab_inne_spisy}} {{Patrz|tab_inne_spisy}} | _7 = Tabela innych spisów książki, jeżeli istnieją, | 8 = {{Code|nazwa_glownego_spisu}} {{Patrz|nazwa_glownego_spisu}} | _8 = Nazwa głównego spisu treści, zwykle jest to strona główna książki. | 9 = {{Code|numer}} {{Patrz|numer}} | _9 = Numer, który liczmy, do którego dodajemy jeden. }} Parametry zwracane: <syntaxhighlight lang="lua"> return tablista_artykulow,tab_inne_spisy,numer; </syntaxhighlight> Opis parametrów zwracanych: {{OpisParametrów | 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}. | 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}. | 3 = {{Code|numer}} | _3 = Jak w: {{LinkPatrz|numer}}. }} Gdy zmienna: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, istnieje, i ma niepustą tablicę, wtedy ta funkcja wtedy faktycznie coś robi, w przeciwnym wypadku zwraca tylko wynik. Liczmy spis treści, na który wskazuje przekierowanie, gdy strona nie jest nim, to sama strona ze wskazania: <syntaxhighlight lang="lua"> local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci); local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci; </syntaxhighlight> Zmienna: {{Code|spis_tresci_strona}}, to jest nic innego, jak: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, lub tylko jest łańcuchem znakowym, według: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}. Policzmy zmienną: {{Code|tab_element}} {{Patrz|tab_element}}: <syntaxhighlight lang="lua"> local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,}; </syntaxhighlight> Jeżeli pierwszy rozdział danego spisu nie ma numeracji, tzn. wtedy liczymy element: {{Code|tablista_artykulow[1][1][2][1]}}, to wtedy jego pozycje artykularne: {{Code|numer > 1}}, zapisujemy na sam koniec w tablicy: {{Code|tab_element}} {{LinkPatrz|tab_element}}. Następnie usuwamy pierwszy rozdział z artykułami przy pomocy funkcji: {{LzLua|table.remove}}. Poziomy rozdziałów powiększamy o jeden aż do napotkania pierwszego rozdziału centrowanego, wtedy przerywamy pętle. Następnym podejściem jest dodanie przed pierwszą pozycją elementu: {{Code|tab_element}} {{LinkPatrz|tab_element}}, do tablicy: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}}, przy pomocy funkcji: {{LzLua|table.insert}}. Jeżeli spis treści: {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, istnieje, wtedy robimy dalsze operacje. Jeżeli tablica: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, nie istnieje, to ją tworzymy, wtedy {{Code|spis_tresci}} {{LinkPatrz|spis_tresci}}, przy pomocy: {{LzLua|table.insert}}, dodajemy do: {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}. Następnie, jeżeli nie istnieje element: {{Code|tablista_artykulow[1][2]}} {{Patrz|tablista_artykulow[1][2]}}, związany artykułami należącymi do rozdziału, to go tworzymy, wtedy tworzymy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, w postaci: <syntaxhighlight lang="lua"> local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,}; </syntaxhighlight> To: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, jest opisane w module: {{lr|Moduły/StronicowyParser/SpisTreści/Tom I|Spis treści - Tom I}}. To dodajemy na pierwszą pozycję do zbioru artykułów, do elementu: {{LinkPatrz|tablista_artykulow[1][2]}}, na pierwszą pozycję, przy pomocy funkcji: {{LzLua|table.insert}}. Następnym krokiem jest zwracanie przez funkcję zmiennych powyżej powiedzianych. ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== Funkcja służy do uzyskiwania elementów danego spisu, ustawiania go odpowiedniego i wstawianie go do ogólnego spisu opisujące wszystkie spisy w danej książce. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}. | 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}. | 3 = {{Code|spis_tresci}} | _3 = Jak w: {{LinkPatrz|spis_tresci}}. | 4 = {{Code|numer}} | _4 = Jak w: {{LinkPatrz|numer}}. }} Uzyskujemy elementy spisu z wywołania dla pojedynczego spisu treści: <syntaxhighlight lang="lua"> local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH); </syntaxhighlight> Jeżeli zmienna: {{Code|tablista_artykulow_iter}} {{Patrz|tablista_artykulow_iter}} istnieje i jest tablicą, to ją przetwarzamy przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, w sposób: <syntaxhighlight lang="lua"> tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer); </syntaxhighlight> Tak otrzymaną zmienną: {{Code|tablista_artykulow_iter}} {{LinkPatrz|tablista_artykulow_iter}}, iterujemy po elementach, wsadzając ją do tablicy na sam koniec: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, a jak tablica nie istnieje, to ją tworzymy z pustą tablicą, i wtedy wykonujemy tą operację. To wsadzanie wykonujemy za pomocą funkcji: {{LzLua|table.insert}}. Na samym końcu zwracamy wiele elementów: <syntaxhighlight lang="lua"> return tablista_artykulow,tab_inne_spisy,numer; </syntaxhighlight> ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== Funkcja przygotowuje aktualny spis treści, by dodać do niego nowy spis, jeżeli on istnieje, jako artykuł w spisie o nazwach: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_artykulow}} | _1 = Jak w: {{LinkPatrz|tabela_artykulow}}. | 2 = {{Code|tab_inne_spisy}} | _2 = Jak w: {{LinkPatrz|tab_inne_spisy}}. }} Uruchamiamy funkcję: {{LinkŚródtytuł|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}, która zwraca wynik, który trzeba sprawdzić, czy istnieje, przed dalszymi operacjami, tzn. {{Code|artykul_spisu_rzeczy}} {{Patrz|artykul_spisu_rzeczy}}, uzyskując z aktualnej listy spis treści dla całej książki, jako jego zespołu, na podstawie jego, dowiadujemy, że taki omawiany spis istnieje, wtedy stary spis, czyli stronę główną podręcznika, przygotujemy do tego, do tego robimy funkcją: {{LinkŚródtytuł|Spis}}, wywołaniem, ale przed tym wywołaniem ustawiamy: {{Code|numer {{=}} 1}}, zatem: <syntaxhighlight lang="lua"> tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer); </syntaxhighlight> Następnym krokiem jest czytanie tego spisu przy pomocy wywołania: {{LinkŚródtytuł|InneSpisy}}, jako: <syntaxhighlight lang="lua"> tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); </syntaxhighlight> Funkcja używa zmiennej uzyskanego wcześniej, tzn.: {{Code|artykul_spisu_rzeczy}} {{LinkPatrz|artykul_spisu_rzeczy}}, to jest to samo, co: {{Code|artykul_bez_naglowka_w_bazie}} {{LinkPatrz|artykul_bez_naglowka_w_bazie}}, uzyskanej z funkcji liczący taki spis według: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, którym wartością jest nazwa artykułu bez nagłówka w bazie. Wartościami zwracanymi przez funkcję są dwie osobne zmienne zrzucane jednocześnie: <syntaxhighlight lang="lua"> return tabela_artykulow,tab_inne_spisy; </syntaxhighlight> Jest to ogólna tabela wszystkich rozdziałów i do nich ich artykułów - pierwsza wartość, i uzupełniona lista innych spisów treści - druga wartość. ===== {{Śródtytuł|IteratorSpisTresci}}{{Code|IteratorSpisTresci}} ===== Funkcja uruchamiająca iterator po spisach treści innych niż spis treści główny, jego definicja: <syntaxhighlight lang="lua"> local IteratorSpisTresci=function() local liczba=1; return function() local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba]; liczba=liczba+1; return spis_tresci; end; end; </syntaxhighlight> Funkcja wykorzystuje tablicę parametrów autonawigacji ze strony ściśle określonej z katalogu stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, iteruje co jeden numer spisu treści, tzn.: {{Code|spis treści 1}}, {{Code|spis treści 2}},..., {{Code|spis treści N}}, gdzie {{Code|N}}, to największa liczba charakteryzująca dany spis treści. W samym iteratorze liczba: {{Code|liczba}} {{Patrz|liczba-IteratorSpisTresci}}, powiększa się co jeden, aż do zakończenia limitu spisów treści, tzn do najbliżeszej przerwy lub końca przy iteracji, bo na samym końcu iterator zrzuci wynik {{Code|nil}}. ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== Funkcja iteruje po stronach i ich nazwach, jakie mają być wyświetlane w linkach, generowane przez: {{Code|{{s|Autonawigacja}}}} {{LinkPatrz|Autonawigacja}}, ale na podstawie {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, według jednych ze stron: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, ustawień. Definicja skrótowa funkcji i jego funkcji zwracanej, która jest iteratorem: <syntaxhighlight lang="lua"> local IteratorFun=function() ... ---- operacje robione przed uruchomieniem iteratora; return function() ... ---- ciało iteratora return strona,nazwa; ---- zwracane elementy; end; end; </syntaxhighlight> Definicja funkcji: {{Code|STRONA}} {{Patrz|STRONA}} i {{Code|NAZWA}} {{Patrz|NAZWA}}, są: <syntaxhighlight lang="lua"> local STRONA=function(liczba)return liczba*2-1;end; local NAZWA=function(liczba)return liczba*2;end; </syntaxhighlight> W iteratorze dostępna jest zmienna: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{Patrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, z którego uzyskujemy parametry, te wywołania są napisane w ciele iteratora, w sposób: <syntaxhighlight lang="lua"> local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)]; local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)]; </syntaxhighlight> Iterację zaczynamy dla: {{Code|liczba}} {{Patrz|liczba-IteratorFun}}, od jedynki, po uzyskaniu powyższych wartości, licznik (tą liczbę) powiększamy o jeden, a następnie zwracamy w iteratorze zmienne: {{Code|strona}} {{Patrz|strona}}, i {{Code|nazwa}} {{Patrz|nazwa}}. ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== Jest to funkcja do zbierania danych z jednego ze ściśle określonej strony szablonu z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZbieranieDanychStronZAutonawigacji()...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Brak parametrów. | komórka1 = tak }} Gdy parametr z iteracji iteratorem: {{Code|iter}}, z którego przy jego kolejnych wywołaniach otrzymujemy parametry: {{Code|strona}} {{LinkPatrz|strona}}, i {{Code|nazwa}} {{LinkPatrz|nazwa}}, dla: {{Code|strona}} {{LinkPatrz|strona}}, jest równy wartości odpowiadającej fałszywej, wtedy funkcja zakańcza pracę. W przeciwnym wypadku te parametry są dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem: {{Code|true}}, ale nazwa jest dekodowana, gdy ona jest niepusta. Gdy zmienna: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, nie istnieje, to wtedy ją tworzymy, inicjując ją pustą tablicą, oraz inicjujemy tabelę artykułów dodatkowych wykorzystując funkcję: {{LzLua|table.insert}}: <syntaxhighlight lang="lua"> table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,}); </syntaxhighlight> Następnie liczymy parametr dla danego rozdziału, tzn. liczymy: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, według: <syntaxhighlight lang="lua"> tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow]; </syntaxhighlight> Następnie liczymy adres bezwzględny: {{Code|strona}} {{LinkPatrz|strona}}, z funkcji: {{Code|DekodowanieTekstu}}, to jest wartość zwracana, jako funkcja, z: {{Code|{{sr|#p.DekodowanieTekstu|p=StronicowyParser/Potrzebne}}}}, a tą samą nazwę później to z: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, według wywołania, znając dwa parametry: {{Code|strona}} {{LinkPatrz|strona}}, i {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}, czyli: <syntaxhighlight lang="lua"> strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,}; </syntaxhighlight> ====== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ====== Jest to funkcja wsadzająca elementy do tablicy do funkcji: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}} | _1 = Tabela rozdziału i do niego artykułów. | 2 = {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}} | _2 = Numer pozycji na którym element zostonie element {{LinkPatrz|tab_stare}} wstawiony. | 3 = {{Code|tab_stare}} {{LinkPatrz|tab_stare}} | _3 = Wstawiany element. }} Jeżeli zmienna: {{Code|dodatkowe_artykuly}} {{Patrz|dodatkowe_artykuly}}, nie istnieje, to jest inicjowana tablicą pustą. Liczymy adres strony na podstawie: <syntaxhighlight lang="lua"> ---- Jeżeli zmienna jest tablicą i nie ma klucza: "["LINK"]=true", wtedy przyjmuje wartość: true, w przeciwnym wypadku: false; local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]); ---- Nazwa artykułu lub adres strony, dla ktorej liczymy adres; local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1]; </syntaxhighlight> Liczymy, czy strona jest w podręczniku, czyli: {{Code|czy_w_podreczniku}} {{Patrz|czy_w_podreczniku}}, ze: {{Code|tab_stare[5]}} {{Patrz|tab_stare[5]}}, a następnie kod języka i projektu, kolejno: {{Code|kod_jezyka_koncowy}} {{Patrz|kod_jezyka_koncowy}}, i {{Code|kod_projektu_koncowy}} {{Patrz|kod_projektu_koncowy}}, jeżeli zmienna: {{Code|czy_table_baza_artykulu}} {{Patrz|czy_table_baza_artykulu}}, jest nie równa wartości prawdziwej, to te zmienne przyjmuje wartość {{Code|nil}}, w przeciwnym wypadku, kolejno wartości: {{Code|tab_stare[1][5]}} i {{Code|tab_stare[1][6]}}. Wsadzamy element do tablicy: {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}}, przy pomocy funkcji: {{LzLua|table.insert}}, w sposób: <syntaxhighlight lang="lua"> table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,}); </syntaxhighlight> Później wstawiamy element: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, do: {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, na pozycję: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, używając wywołania: {{LzLua|table.insert}}, czyli: <syntaxhighlight lang="lua"> table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); </syntaxhighlight> ====== Dalszy opis funkcji nadrzędnej ====== Dalszym krokiem jest wsadzenie elementu do ogólnej tablicy, a tutaj do artykułu w danym rozdziale, robimy, mając przetwarzaną zmienną: {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}}, to według: <syntaxhighlight lang="lua"> local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,...,...,true,{strona,nazwa,},...,...,...,"",...,...,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,...,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"); </syntaxhighlight> Powyżej użyto trójkropków: {{Code|...}}, bo te parametry są standardowe dla każdego wywołania. Powyżej wstawianie odbyło się przy pomocy funkcji: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}, używając: {{Code|{{sr|#WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|p=StronicowyParser/SpisTreści/Tom I}}}}, w której jest tworzone: {{Code|tab_stare}} {{LinkPatrz|tab_stare}}, który natomiast jest wsadzany do ogólnej tablicy rozdziałów i w nich artykułach na odpowiednią pozycję. W wstawianym elemencie ustawiamy sztuczną listę z początkiem: {{Code|<nowiki>*</nowiki>}}, z numeracją pusta, i linią artykułu, którą jest link: <syntaxhighlight lang="lua"> "[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]" </syntaxhighlight> To wstawienie dzieje się przy pomocy funkcji przetwarzającej dane: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu|StronicowyParser/SpisTreści/Tom I}}, używającą: {{LinkŚródtytuł|WsadzanieParametryDoTablicy}}. ==== Dalszy opis funkcji głównej ==== Liczymy adres strony głównej podręcznika: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, z funkcji: {{Code|{{sr|#m["NazwaModułu"]|p=Nazwy/Tom III}}}}, i sprawdzamy, czy strona istnieje na podstawie: {{Code|{{sr|#p.PoliczZbiory|p=Techniczne}}}}. Jeśli strona istnieje, wtedy liczymy, czy istnieje jego przekierowanie z funkcji: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}, a jeżeli istnieje jego przekierowanie, to wtedy wartość tej funkcją jest stroną na którą wskazuje to przekierowanie, oznaczmy tą zmienną: {{Code|strona_spisu_tresci}} {{Patrz|strona_spisu_tresci}}. Jeżeli: {{Code|strona_spisu_tresci}} {{LinkPatrz|strona_spisu_tresci}}, istnieje, wtedy jego nazwę dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}. Używając tabeli nazw, tzn.: {{Code|tabela_nazw}} {{Patrz|tabela_nazw}}, której przydzielamy wartość tabeli pustej, liczymy kolejno: {{Code|nazwa_przestrzeni2}} {{Patrz|nazwa_przestrzeni2}}, {{Code|nazwa_przestrzeni_ksiazki2}} {{Patrz|nazwa_przestrzeni_ksiazki2}} i {{Code|nazwa_ksiazki2}} {{Patrz|nazwa_ksiazki2}}, z następujących funkcji kolejno: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, albo: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, gdy: {{Code|nazwa_przestrzeni_ksiazki2}} {{LinkPatrz|nazwa_przestrzeni_ksiazki2}}, jest pusta, przeciwnie z: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. Sprawdzamy, czy one pokrywają się kolejno z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, a jeżeli w całości, wtedy sprawdzamay, czy to z {{Code|2}} należą do przestrzeni nazw i niby-przestrzenu nazw książkowych. Przestrzenie ksiązkowe, to: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, oraz {{Np|User|link=tak}}, w niby przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>/''', i {{Np|Project|link=tak}} w niby-przestrzeni nazw: '''{{Np|Project|link=tak}}:Brudnopis/<użytkownik>/''', jeżeli do tej przestrzeni nie należy, to funkcja kończy się z błędem (z wartością) {{Code|2}}, przeciwnie tworzona jest zmienna {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}}: <syntaxhighlight lang="lua"> adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,}; </syntaxhighlight> Także jest tam wywoływana funkcja: {{Code|__FUNKCJA_SPISU_RZECZY}} {{LinkPatrz|__FUNKCJA_SPISU_RZECZY}}, jeśli istnieje: <syntaxhighlight lang="lua"> local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil; </syntaxhighlight> Jeżeli ta funkcja nie istnieje, lub zwraca {{Code|nil}} lub nawet {{Code|1}}, wtedy funkcja zakańcza się z błędem: {{Code|1}}, przeciwnie na podstawie tego innego niż te, jest przyrównywanie tego temu, wtedy mamy nowe parametry nazw dla tego. I na podstawie tego liczymy nową nazwę: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}. Liczymy adres ustawień z: {{Code|NawigacjaSpecjalna/Nawigacja/...}} {{LinkPatrz|NawigacjaSpecjalna/Nawigacja/}}, i sprawdzamy, czy on ma przekierowanie z: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}, wtedy ma nowy adres, dalej liczymy jego kod źdródłowy z funkcji: {{Code|{{sr|#p.WikikodStrony|p=Techniczne}}}}, przy pomocy: <syntaxhighlight lang="lua"> local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,}; </syntaxhighlight> A jeżeli taka strona nie istnieje, wtedy: {{Code|tekst}}, przyjmuje wartość: {{Code|nil}}, wtedy wydobywamy kod pojedynczego spisu treści {{Patrz|pojedyncze_wywolanie}}, czyli strony głównej podręcznika (książki): <syntaxhighlight lang="lua"> ---- Zbieranie parametrów pojedynczego spisu (strony głównej strony jako spisu treści) local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; ---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); ---- Zwracanie parametrów; return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; </syntaxhighlight> Przeciwnie kodujemy ten tekst: {{Code|tekst}} {{Patrz|tekst}}, przy pomocy pustej tabeli: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}. Co na podstawie liczmy tego parametry szablonu o: {{Code|obiekt}} {{=}} {{Code|SZABLON}}, w nim o nazwie: {{Code|{{sr|#p.uklad_autonawigacji|p=StronicowyParser/obiekty}}}}, czyli: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, również: {{Code|nazwa_szablonu_uklad_autonawigacji}} {{Patrz|nazwa_szablonu_uklad_autonawigacji}}, i {{Code|tabela_modyfikatorow_uklad_autonawigacji}} {{Patrz|tabela_modyfikatorow_uklad_autonawigacji}}, a także: {{Code|szablon_uklad_autonawigacji}} {{Patrz|szablon_uklad_autonawigacji}}, dalej przerywamy pętle. Jeżeli nie wykryto szablonu autonawigacji, wtedy zakańczamy funkcje jak w punkcie: {{LinkPatrz|pojedyncze_wywolanie}}. A jeżeli nie ma tabeli parametrów szablonu: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, to też podobnie. A jeżeli chcemy liczyć manualnie, wtedy musimy powiedzieć: <syntaxhighlight lang="lua"> local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"]; </syntaxhighlight> Jeżeli wartość tej zmiennej: {{Code|automat_manualny}} {{Patrz|automat_manualny}}, jest nie {{Code|nil}}, i jest niepusta, to ze zmiennej: {{Code|spis treści}} {{Patrz|spis treści}}, liczmy z tego nazwę książki i ona musi się zgadzać ze zmienną: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, co po zgadzaniu, liczmy nazwę artykułu nazwy artykułu, w przeciwnym wypadku mamy do czynienia ze stroną główną podręcznika, wartość pusta będzie odpowiadała stronie głównej podręcznika, co na sam koniec liczymy: <syntaxhighlight lang="lua"> ---- Zbieranie parametrów pojedynczego o policzoej nazwie artykułu spisu; local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); ---- Sprawdzanie, czy dodatkowy spis treści istnieje , taki jak: "Spis treści", i przekształcanie tablic otrzymanych z poprzedniego wywołania; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); ---- Zwracanie parametrów; return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; </syntaxhighlight> Gdy zmienna: {{Code|automat_manualny}} {{LinkPatrz|automat_manualny}}, jest pusta lub niepodana, wtedy następnym krokiem jest odkodowanie parametrów: {{Code|{{s|Układ autonawigacji}}}} {{LinkPatrz|Układ autonawigacji}}, przy pomocy: {{Code|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji}}, i ich rozwinięcie funkcją: {{LzLua|frame:preprocess}}. Ustawmy zmienną: {{Code|numer}} {{LinkPatrz|numer}}, na wartość {{Code|1}}. Liczymy zmienne: {{Code|bez spisów treści}} {{Patrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{Patrz|bez analizy spisów treści}}, tabeli parametrów: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, oraz sprawdzamy, czy one są niepuste. Gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, jest niepodana lub pusta, wtedy liczymy z klucza: {{Code|spis treści}} {{LinkPatrz|spis treści}}, ze zmiennej: {{Code|tabela_parametrow_szablonu_uklad_autonawigacji}} {{LinkPatrz|tabela_parametrow_szablonu_uklad_autonawigacji}}, a jeżeli ta zmienna istnieje, wtedy ją dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, z drugim parametrem {{Code|true}}, i liczymy jego adres bezwzględny z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, mając względem, którego ma liczyć, tzn.: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}. Następnie sprawdzamy, czy w policzonym spisie nazwa ksiązki zgadza się z tą: {{Code|pelna_nazwa_ksiazki}} {{LinkPatrz|pelna_nazwa_ksiazki}}, a jeżeli się zgadza, to liczymy nazwę artylułu spisu treści, przeciwnie nazwa artykułu spisu treści ma wartość pustą, wartość pusta nazwy artykułu spisu treści odpowiada stronie głównej podręcznika. W innym wypadku, gdy zmienna: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}} jest niepusta, wtedy tylko uwzględniamy nazwę spisu treści jako stronę główną podręcznika. Tą zmienną jest: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}. Gdy zmienne: {{Code|bez spisów treści}} {{LinkPatrz|bez spisów treści}}, i {{Code|bez analizy spisów treści}} {{LinkPatrz|bez analizy spisów treści}}, są niepodane lub puste, wtedy liczymy pojedynczy artykuł będący spisem treści o nazwie: {{Code|nazwa_glownego_spisu}} {{LinkPatrz|nazwa_glownego_spisu}}, zatem tego wywołanie wygląda tak: <syntaxhighlight lang="lua"> tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); </syntaxhighlight> Gdy zmienna: {{Code|przekierowanie_spisu_tresci}} {{LinkPatrz|przekierowanie_spisu_tresci}}, ma wartość odpowiadającej prawidziwej, czyli to pewien łańcuch znakowy, wtedy policzmy: {{LinkPatrz|nazwa_glownego_spisu}}, dla tego przekierowania: <syntaxhighlight lang="lua"> nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,}; </syntaxhighlight> Jeśli wartość: {{Code|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}} {{Patrz|tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika}}, jest {{Code|nil}}, lub {{Code|0}}, wtedy funkcja jest zakańczana w sposób: <syntaxhighlight lang="lua"> return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; </syntaxhighlight> Lub przeciwnie, napiszmy przemianowania zmiennych na: {{Code|tablista_artykulow}} {{LinkPatrz|tablista_artykulow}}, i {{Code|licencja}} {{Patrz|licencja}}, według: <syntaxhighlight lang="lua"> tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika; </syntaxhighlight> Liczymy spis treści odpowiadającym wartością tabeli: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, zatem to policzmy, czy tak jest, schematycznie: <syntaxhighlight lang="lua"> ---- Przygotowanie spisu do wielu spisów treści; tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer); ---- Liczenie czy jest artykuł w spisie treści o nazwie typu: "Spis treści"; local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow); if(artykul_spisu_rzeczy)then ---- Dodaje spis nowy do większego spisu, ten wykryty zaraz powyższą funkcją; tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; </syntaxhighlight> Uruchamiamy iterator: {{Code|iter}} {{Patrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorSpisTresci}}, bez parametrów, zdefiniowanej w tym bloku, co jest ta iteracja, wtedy możemy je iterować po spisie treści w sposób: <syntaxhighlight lang="lua"> for spis_tresci in iter do .... ---- ciało iterowanej pętli; end; </syntaxhighlight> Każdy tak uzyskany: {{Code|spis_treści}} {{LinkPatrz|spis_treści}}, dekodujemy funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, następnie rozwijamy adres względny na bezwzględny względem korzenia drzewa przestrzeni nazw z funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, i dodajemy te spisy do głównego drzewa tablicy rozdziałów i ich artykułów przy pomocy funkcji: {{LinkŚródtytuł|InneSpisy}}, właśnie tak: <syntaxhighlight lang="lua"> tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer); </syntaxhighlight> Uruchomimy inny iterator: {{Code|iter}} {{LinkPatrz|iter}}, z funkcji: {{LinkŚródtytuł|IteratorFun}}, wywołanej bezparametrowo, wtedy iterację możemy napisać wykorzystujac funkcję: {{LinkŚródtytuł|ZbieranieDanychStronZAutonawigacji}}, zdefiniowanej w tej pętli, działającą tak: <syntaxhighlight lang="lua"> for strona,nazwa in iter do ... ---- definicja funkcji: ZbieranieDanychStronZAutonawigacji; ZbieranieDanychStronZAutonawigacji(); end; </syntaxhighlight> Funkcja w nagłówku zwraca wielowartościowy, wtedy wynik na samym końcu zakończenia jej jest: <syntaxhighlight lang="lua"> return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci; </syntaxhighlight> ; Opis zwracanych parametrów{{dk}} {{OpisParametrów | 1 = {{Code|tablista_artykulow}} | _1 = Jak w: {{LinkPatrz|tablista_artykulow}}. | 2 = {{Code|licencja}} | _2 = Jak w: {{LinkPatrz|licencja}}. | 3 = {{Code|nazwa_glownego_spisu}} | _3 = Jak w: {{LinkPatrz|nazwa_glownego_spisu}}. | 4 = {{Code|tab_inne_spisy}} | _4 = Jak w: {{LinkPatrz|tab_inne_spisy}}. | 5 = {{Code|dodatkowe_artykuly}} | _5 = Jak w: {{LinkPatrz|dodatkowe_artykuly}}. | 6 = {{Code|adres_ksiazki_glownego_spisu_tresci}} | _6 = Jak w: {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0etytk5rffzxbscktt3o7xalqyv1d6p Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II 4 63904 560412 557984 2026-11-01T11:19:42Z Persino 2851 /* {{Śródtytuł|p.HnNumerWprowadzeniaTekstu}}{{Code|p.HnNumerWprowadzeniaTekstu}} */ 560412 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.NapisWprowadzeniaTekstu}}{{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż siedem, zwraca nagłówek, np.: {{Code|{{=}}{{=}} Tekst rozdziału {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Tekst rozdziału</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. Funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|rozdzial}} | _1 = Tekst wnętrza rozdziału. | 2 = {{Code|poziom}} | _2 = Numer całkowity dodatni poziomu. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/NapisWprowadzeniaTekstu/}}. == {{Śródtytuł|p.NapisWprowadzeniaTekstuHn}}{{Code|p.NapisWprowadzeniaTekstuHn}} == Funkcja dla rozdziału: na podstawie jej zawartości, poziomu i tabeli atrybutów, zamienia to na nagłówek w jednej linii. Dla poziomu większego niż zero, ale mniejszego niż siedem, zwraca nagłówek, np.: {{Code|<nowiki><h3>Tekst rozdziału</h3></nowiki>}}, dla poziomu: {{Code|3}}, czy są używane wtedy są nagłówki od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu, czyli coś w rodzaju, np. {{Code|<nowiki><h6 id="coś" class="mw-hnumber mw-hnumber-9">Tekst rozdziału</h6></nowiki>}}, dla poziomu: {{Code|9}}. Definicji skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,tab_atrybuty)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|rozdzial}} | _1 = Tekst rozdziału. | 2 = {{Code|poziom}} | _2 = Poziom rozdziału. | 3 = {{Code|tab_atrybuty}} | _3 = Tabela nazw (kluczy) i ich wartości atrybutów. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/NapisWprowadzeniaTekstuHn/}}. == {{Śródtytuł|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}}{{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst zawartości pierwszego parametru wspomnianego szablonu. | 2 = {{Code|zawartość}} {{Patrz|zawartosc}} | _2 = Zawartość elementu kodu. | 3 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} | _3 = Jaki to jest obiekt, np. {{Code|ZNACZNIK}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod danego obiektu. }} Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end; if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Śródtytuł|p.NapisWprowadzeniaTekstuHNumer}}{{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Tekst rozdziału {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Tekst rozdziału ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Tekst rozdziału</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. }} Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Tekst rozdziału ===}} {{HNumer|1= ======= Tekst rozdziału =======}} </syntaxhighlight> === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/NapisWprowadzeniaTekstuHNumer/}}. == {{Śródtytuł|p.PodajNapisPoziomuWprowadzeniaTekstu}}{{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez '''{{NS|k=mw|l=tak|w=tak}}''', a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{LzLua|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/PodajNapisPoziomuWprowadzeniaTekstu/}}. == {{Śródtytuł|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}}{{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} | _1 = Linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/PodajTekstHNumerNapisuWprowadzeniaTekstu/}}. == {{Śródtytuł|p.CzyJestNapisWprowadzeniaTekstu}}{{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zawartosc}} | _1 = Tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestNapisWprowadzeniaTekstu/}}. == {{Śródtytuł|p.CzyJestListaNapisuWprowadzeniaTekstu}}{{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zawartosc}} | _1 = Tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestListaNapisuWprowadzeniaTekstu/}}. == {{Śródtytuł|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}}{{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|wiersz}} | _1 = Czy w tekście jest wiersz z takim opisywanym nagłókiem. }} Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Wartość zwracana: {{OpisParametrów | 1 = Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}. | komórka1 = tak | 2 = Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}. | komórka2 = tak }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/SprawdzanieCzyToJestNapisWprowadzeniaTekstu/}}. == {{Śródtytuł|p.WierszHNumer}}{{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Parametr z tymi nagłówkami. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/WierszHNumer/}}. == {{Śródtytuł|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}}{{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Funkcja jest skomplikowana, analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|rozdzial_z_numeracja}} | _1 = Rozdzial z numeracją lub bez. }} Zwracane wartości: {{OpisParametrów | 1 = {{Code|rozdzial}} | _1 = Rozdzial bez numeracji, | 2 = {{Code|numetracja}} | _2 = Numeracja. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu/}}. == {{Śródtytuł|p.CzyZerowyNapisWprowadzeniaTekstu}}{{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyZerowyNapisWprowadzeniaTekstu/}}. == {{Śródtytuł|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}}{{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{Code|z_parametrami_linkowymi}} {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} | _1 = Przedrostek listy z linią {{Code|linia}}. | 2 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _2 = Linia bez przedrostka. | 3 = {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} | _3 = Wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru, a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej. | 4 = {{Code|nazwa_przestrzeni}} | _4 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki. | 5 = {{Code|nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 6 = {{Code|pelna_nazwa_spisu_tresci}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 7 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 10 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _10 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. }} Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu/}}. == {{Śródtytuł|p.HnNumerWprowadzeniaTekstu}}{{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. Gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|nazwa}} | _1 = Nazwa tagu typu {{Tag|h<numer>}}, gdzie: {{Code|<nowiki>0 < numer < 7</nowiki>}}. | 2 = {{Code|atrybuty}} | _2 = Tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. }} Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: {{Tbl|uchwyt=p.znaczniki_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight>}} Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu/}}. == {{Śródtytuł|p.NumeracjaOrazTekstWprowadzeniaTekstu}}{{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Funkcja jest bardzo prosta, ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nim znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zawartosc}} | _1 = Zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumeracjaOrazTekstWprowadzeniaTekstu/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kezbpfxm4nyt8iavwkdyybn1t23s568 Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III 4 63905 560413 558059 2026-11-01T11:24:48Z Persino 2851 560413 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyJestJakikolwiekLinkArtykularnyTekstu}}{{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli: {{Tbl|uchwyt=p.linki_szablony_elementy_spisu_rzeczy|tekst= <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight>}} Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: {{Tbl|uchwyt=p.inne_linki_szablony_elementy_spisu_rzeczy|tekst= <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight>}} Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Funkcja wykorzystuje: {{OpisParametrów | 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} | _1 = Jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. | 2 = {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} | _2 = Jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestJakikolwiekLinkArtykularnyTekstu/}}. == {{Śródtytuł|p.CzyJestInnySpecjalnyTekstowyObiekt}}{{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody, to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do policzenia, zawierające elementy z omawianymi kodami. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestInnySpecjalnyTekstowyObiekt/}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: {{Tbl|uchwyt=p.szablony_kompletowania_stron_woluminu|tekst= <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight>}} Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/__FUNKCJA_KOMPLETOWANIA/}}. == {{Śródtytuł|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}}{{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przerobienia. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu/}}. == {{Śródtytuł|p.ObiektySzablonoweFormatowaniaTekstu}}{{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest: {{Tbl|uchwyt=p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|tekst= <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight>}} Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami. | 2 = {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} | _2 = Tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} |_3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweFormatowaniaTekstu/}}. == {{Śródtytuł|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}}{{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|<nowiki>$(<name>)</nowiki>}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: {{Tbl|uchwyt=p.szablony_z_dodatkiem_obiektowym|tekst= <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight>}} Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} | _1 = Zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _3 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. }} Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu/}}. == {{Śródtytuł|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}}{{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} |_6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii/}}. == {{Śródtytuł|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}}{{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: {{Tbl|uchwyt=p.szablony_w_nie_w_tej_samej_linii|tekst= <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight>}} Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> s2guj2lorsvihebobdh0d8zm0j8rbt0 Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV 4 63906 560414 558071 2026-11-01T11:27:12Z Persino 2851 560414 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.UruchamianieAnalizatoraSpisuRzeczyStrony}}{{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> {{OpisParametrów | 1 = Funkcja nie przyjmuje żadnego parametru. | komórka1 = tak }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UruchamianieAnalizatoraSpisuRzeczyStrony/}}. == {{Śródtytuł|p.ParserPodawaniaNapisuWprowadzeniaTekstu}}{{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni równaniowy, czy jest rzeczywiście nagłówkiem rozdziału, czy tylko zwykłym tekstem. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza też do rozdziałów linie utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|<nowiki>1-6</nowiki>}}, ale też i: {{Code|<nowiki>> 6</nowiki>}}. Funkcja sprawdza też, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów, jeśli zajdzie taka potrzeba. Nie wszystkie rozdziały ujemne (rozdziały listy) przez ten twór (przez niego) są uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) ... return function(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} | _1 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}. | 2 = {{Code|nazwa_przestrzeni_ksiazki}} | _2 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}. | 3 = {{Code|nazwa_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}. | 4 = {{Code|nazwa_spisu_tresci}} | _4 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 5 = {{Code|pelna_nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 9 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _9 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, | 2 = {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} | _2 = Czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. }} Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: {{OpisParametrów | 1 = {{Code|linia_temp}} {{Patrz|linia_temp}} | _1 = Rozważana linia. | 2 = {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} | _2 = Nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii. | 3 = {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} | _3 = Poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}. | 4 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _4 = Początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}. | 5 = {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} | _5 = Numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi. | 6 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _6 = Czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ParserPodawaniaNapisuWprowadzeniaTekstu/}}. === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: {{Tbl|uchwyt=p.szablony_wprowadzenia_napisu_spisu_rzeczy|tekst= <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight>}} Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|tekst= <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight>}} Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kj29c8xwt534o9mn34d480z9lxqsgfp 560415 560414 2026-11-01T11:29:21Z Persino 2851 560415 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.UruchamianieAnalizatoraSpisuRzeczyStrony}}{{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> {{OpisParametrów | 1 = Funkcja nie przyjmuje żadnego parametru. | komórka1 = tak }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UruchamianieAnalizatoraSpisuRzeczyStrony/}}. == {{Śródtytuł|p.ParserPodawaniaNapisuWprowadzeniaTekstu}}{{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni równaniowy, czy jest rzeczywiście nagłówkiem rozdziału, czy tylko zwykłym tekstem. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza też do rozdziałów linie utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|<nowiki>1-6</nowiki>}}, ale też i: {{Code|<nowiki>> 6</nowiki>}}. Funkcja sprawdza też, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów, jeśli zajdzie taka potrzeba. Nie wszystkie rozdziały ujemne (rozdziały listy) przez ten twór (przez niego) są uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) ... return function(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} | _1 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}. | 2 = {{Code|nazwa_przestrzeni_ksiazki}} | _2 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}. | 3 = {{Code|nazwa_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}. | 4 = {{Code|nazwa_spisu_tresci}} | _4 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 5 = {{Code|pelna_nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 9 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _9 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, | 2 = {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} | _2 = Czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. }} Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: {{OpisParametrów | 1 = {{Code|linia_temp}} {{Patrz|linia_temp}} | _1 = Rozważana linia. | 2 = {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} | _2 = Nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii. | 3 = {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} | _3 = Poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}. | 4 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _4 = Początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}. | 5 = {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} | _5 = Numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi. | 6 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _6 = Czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ParserPodawaniaNapisuWprowadzeniaTekstu/}}. === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: {{Tbl|uchwyt=p.szablony_wprowadzenia_napisu_spisu_rzeczy|tekst= <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight>}} Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkTbl|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkTbl|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|tekst= <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight>}} Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkTbl|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkTbl|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkTbl|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> l6b6wtbgkh15zaoq3ixnyhdsyl379qb 560416 560415 2026-11-01T11:30:06Z Persino 2851 /* Obiekt szablon, czyli typu SZABLON */ 560416 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.UruchamianieAnalizatoraSpisuRzeczyStrony}}{{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> {{OpisParametrów | 1 = Funkcja nie przyjmuje żadnego parametru. | komórka1 = tak }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UruchamianieAnalizatoraSpisuRzeczyStrony/}}. == {{Śródtytuł|p.ParserPodawaniaNapisuWprowadzeniaTekstu}}{{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni równaniowy, czy jest rzeczywiście nagłówkiem rozdziału, czy tylko zwykłym tekstem. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza też do rozdziałów linie utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|<nowiki>1-6</nowiki>}}, ale też i: {{Code|<nowiki>> 6</nowiki>}}. Funkcja sprawdza też, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów, jeśli zajdzie taka potrzeba. Nie wszystkie rozdziały ujemne (rozdziały listy) przez ten twór (przez niego) są uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) ... return function(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} | _1 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}. | 2 = {{Code|nazwa_przestrzeni_ksiazki}} | _2 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}. | 3 = {{Code|nazwa_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}. | 4 = {{Code|nazwa_spisu_tresci}} | _4 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 5 = {{Code|pelna_nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 9 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _9 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, | 2 = {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} | _2 = Czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. }} Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: {{OpisParametrów | 1 = {{Code|linia_temp}} {{Patrz|linia_temp}} | _1 = Rozważana linia. | 2 = {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} | _2 = Nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii. | 3 = {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} | _3 = Poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}. | 4 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _4 = Początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}. | 5 = {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} | _5 = Numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi. | 6 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _6 = Czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ParserPodawaniaNapisuWprowadzeniaTekstu/}}. === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: {{Tbl|uchwyt=p.szablony_wprowadzenia_napisu_spisu_rzeczy|tekst= <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight>}} Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkTbl|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkTbl|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|tekst= <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight>}} Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkTbl|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkTbl|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkTbl|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> grgnaimvuaojk7lbkdkjfghogetvokt Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część I 4 63907 560417 558332 2026-11-01T11:32:01Z Persino 2851 /* Szablony, projektów i tekstów, usuwane z tekstu */ 560417 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end,tekst_rozwiniety_calego_artykulu; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony. | 2 = Nazwy strony danego określonego spisu: | nagłówek2 = tak | 3 = {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 4 = {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} | _4 = Czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,. | 5 = {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} | _5 = czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu | 6 = Tablice wynikłe z zakodowanych zmiennych: | nagłówek6 = tak | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. | 9 = Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:|nagłówek9 = tak | 10 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} | _10 = Funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> str=__FUNKCJA(pelna_nazwa_szablonu,tabela_modyfikatorow); </syntaxhighlight> | 11 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} | _11 = Funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału). {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> tekst_rozwiniety_calego_artykulu=__FUNKCJA2 and __FUNKCJA2(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu; </syntaxhighlight> | 12 = {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} | _12 = Funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_;artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu; </syntaxhighlight> }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = Funkcja nie przyjmuje żadnych parametrów. | komórka1 = tak }} Jednoczesne parametry zwracane przez funkcję zwracaną: {{OpisParametrów | 1 = {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} | _1 = To jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią. | 2 = {{Code|str}} {{Patrz|str}} | _2 = Tekst napisu wprowadzenia tekstu (zawartość rozdziału). | 3 = {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} | _3 = Poziom aktualnego rozdziału. | 4 = {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} | _4 = Przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału. | 5 = {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} | _5 = Numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}. | 6 = {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} | _6 = Przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. }} === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w: {{Tbl|uchwyt=p.szablony_do_usuwania_z_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight>}} Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. }} Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. }} Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. |nagłówek1 = tak }} Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: {{OpisParametrów | 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. | komórka1 = tak | 2 = Parametry w wersji - szablonowe: | nagłówek2 = tak | 3 = Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:| komórka3 = tak | 4 = {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} | _4 = To nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika. | 5 = {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} | _5 = To nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika. | 6 = {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} | _6 = To nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. | 7 = Parametry w wersji - znacznikowe:| nagłówek7 = tak | 8 = Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:|komórka8 = tak | 9 = {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} | _9 = To nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, | 10 = {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} | _10 = To nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, | 11 = {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} | _11 = To nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. }} Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|komorka}} | _1 = Przetwarzana komórka - linia, | 2 = {{Code|nie_trimowanie}} | _2 = Czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. }} Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana wartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zawartosc}} | _1 = Zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} | 2 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _2 = Czy zawartość modyfikowana jest od szablonu. }} Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|wzór}} {{Patrz|wzor}} | _1 = Wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). | 2 = {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} | _2 = Czy linia reprezentuje rozdział dodatni równaniowy. }} Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznika: {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Parametry podstawowe: | nagłówek1 = tak | 2 = Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. | komórka2 = tak | 3 = Inne parametry: | nagłówek3 = tak | 4 = {{Code|tekst}} | _4 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. }} Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki normalne są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br|pojedynczy}}, i kresek: {{Tag|hr|pojedynczy}}, są zamieniane na spacje, i analogicznie podobnie znaczniki szablonowe i też szablony nowych linii: {{s|Br}}, i kresek: {{s|Hr}}, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qcx64ap83bpkngqfqwbhhw6w6bzucsh 560418 560417 2026-11-01T11:40:46Z Persino 2851 560418 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end,tekst_rozwiniety_calego_artykulu; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony. | 2 = Nazwy strony danego określonego spisu: | nagłówek2 = tak | 3 = {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 4 = {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} | _4 = Czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,. | 5 = {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} | _5 = czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu | 6 = Tablice wynikłe z zakodowanych zmiennych: | nagłówek6 = tak | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. | 9 = Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:|nagłówek9 = tak | 10 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} | _10 = Funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> str=__FUNKCJA(pelna_nazwa_szablonu,tabela_modyfikatorow); </syntaxhighlight> | 11 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} | _11 = Funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału). {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> tekst_rozwiniety_calego_artykulu=__FUNKCJA2 and __FUNKCJA2(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu; </syntaxhighlight> | 12 = {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} | _12 = Funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. {{P|Przykład wywołania:}} <syntaxhighlight lang="lua"> tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_;artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu; </syntaxhighlight> }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = Funkcja nie przyjmuje żadnych parametrów. | komórka1 = tak }} Jednoczesne parametry zwracane przez funkcję zwracaną: {{OpisParametrów | 1 = {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} | _1 = To jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią. | 2 = {{Code|str}} {{Patrz|str}} | _2 = Tekst napisu wprowadzenia tekstu (zawartość rozdziału). | 3 = {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} | _3 = Poziom aktualnego rozdziału. | 4 = {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} | _4 = Przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału. | 5 = {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} | _5 = Numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}. | 6 = {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} | _6 = Przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. }} === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w: {{Tbl|uchwyt=p.szablony_do_usuwania_z_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight>}} Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkTbl|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji: {{Tbl|uchwyt=p.szablony_bez_generowania_napisowego|tekst= <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight>}} Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie: {{Tbl|uchwyt=p.szablony_nie_typowo_linkowe|tekst= <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight>}} Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w: {{Tbl|uchwyt=p.znaczniki_szablonowe|tekst= <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight>}} Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest: {{Tbl|uchwyt=p.szablony_sztucznego_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight>}} Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja: {{Tbl|uchwyt=p.magiczne_derektywy|tekst= <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight>}} ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w: {{Tbl|uchwyt=p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|tekst= <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight>}} Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy: {{Tbl|uchwyt=p.artykularne_niespisowe|tekst= <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight>}} Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. }} Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. }} Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. |nagłówek1 = tak }} Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: {{OpisParametrów | 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. | komórka1 = tak | 2 = Parametry w wersji - szablonowe: | nagłówek2 = tak | 3 = Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:| komórka3 = tak | 4 = {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} | _4 = To nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika. | 5 = {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} | _5 = To nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika. | 6 = {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} | _6 = To nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. | 7 = Parametry w wersji - znacznikowe:| nagłówek7 = tak | 8 = Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:|komórka8 = tak | 9 = {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} | _9 = To nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, | 10 = {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} | _10 = To nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, | 11 = {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} | _11 = To nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. }} Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|komorka}} | _1 = Przetwarzana komórka - linia, | 2 = {{Code|nie_trimowanie}} | _2 = Czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. }} Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana wartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zawartosc}} | _1 = Zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} | 2 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _2 = Czy zawartość modyfikowana jest od szablonu. }} Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkTbl|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|wzór}} {{Patrz|wzor}} | _1 = Wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). | 2 = {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} | _2 = Czy linia reprezentuje rozdział dodatni równaniowy. }} Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznika: {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Parametry podstawowe: | nagłówek1 = tak | 2 = Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. | komórka2 = tak | 3 = Inne parametry: | nagłówek3 = tak | 4 = {{Code|tekst}} | _4 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. }} Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki normalne są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br|pojedynczy}}, i kresek: {{Tag|hr|pojedynczy}}, są zamieniane na spacje, i analogicznie podobnie znaczniki szablonowe i też szablony nowych linii: {{s|Br}}, i kresek: {{s|Hr}}, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ieudyd0q2cj72gyn0hxydl0r18qieca Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II 4 63917 560395 558511 2026-11-01T10:33:56Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 560395 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}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}, którego określenie: {{Tbl|uchwyt=p.artykularne_niespisowe|tekst=<syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight>}} Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{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 {{NS|l=tak|k=mw|w=tak}}''', 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,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}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = 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}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = 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. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = 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 artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za 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 spisowe 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 linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|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,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: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|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 poprzednia 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,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: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Ś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 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, ale znalazła okładkę, bądź artykuł główny, 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,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = 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 nowych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = 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}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego, tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{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, ale nie do okładki, danego podręcznika, 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,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,z_innymi_stronami)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | komórka1=tak | 2 = 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}} | _2 = To jest przeszukiwany tekst. | 3 = 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}}.|komórka3=tak | 4 = {{Code|czy_wszystkie_linki}} | _4 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 5 = {{Code|z_innymi_stronami}} | _5 = Czy uwzględniać inne strony będących nieartykułami danej książki, lub linkami '''{{lpg|HTML}}'''. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> eu66qr0ap1vsqgor84lpl4b3ogv5vo4 560396 560395 2026-11-01T10:35:32Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 560396 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}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}, którego określenie: {{Tbl|uchwyt=p.artykularne_niespisowe|tekst=<syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight>}} Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{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 {{NS|l=tak|k=mw|w=tak}}''', 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,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}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = 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}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = 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. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = 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 artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za 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}}}}: {{Tbl|uchwyt=p.inne_linki_szablony_elementy_spisu_rzeczy|tekst=<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 spisowe 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 linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|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,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: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|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 poprzednia 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,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: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Ś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 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, ale znalazła okładkę, bądź artykuł główny, 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,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = 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 nowych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = 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}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego, tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{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, ale nie do okładki, danego podręcznika, 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,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,z_innymi_stronami)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | komórka1=tak | 2 = 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}} | _2 = To jest przeszukiwany tekst. | 3 = 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}}.|komórka3=tak | 4 = {{Code|czy_wszystkie_linki}} | _4 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 5 = {{Code|z_innymi_stronami}} | _5 = Czy uwzględniać inne strony będących nieartykułami danej książki, lub linkami '''{{lpg|HTML}}'''. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> on7l7k05jtgb48j5a80ahi8ydn2dya6 560401 560396 2026-11-01T10:42:41Z Persino 2851 560401 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}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}, którego określenie: {{Tbl|uchwyt=p.artykularne_niespisowe|tekst= <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight>}} Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{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 {{NS|l=tak|k=mw|w=tak}}''', 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,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}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = Parametry złożone {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}. | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = Parametry kodowania {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}. | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = Parametry zakodowanego spisu {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = 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}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = 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. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = 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 artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za 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}}}}: {{Tbl|uchwyt=p.inne_linki_szablony_elementy_spisu_rzeczy|tekst= <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 spisowe 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 linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|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,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: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|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 poprzednia 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,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: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Ś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 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, ale znalazła okładkę, bądź artykuł główny, 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,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = 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 nowych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = 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}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego, tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{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, ale nie do okładki, danego podręcznika, 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,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,z_innymi_stronami)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | komórka1=tak | 2 = 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}} | _2 = To jest przeszukiwany tekst. | 3 = 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}}.|komórka3=tak | 4 = {{Code|czy_wszystkie_linki}} | _4 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 5 = {{Code|z_innymi_stronami}} | _5 = Czy uwzględniać inne strony będących nieartykułami danej książki, lub linkami '''{{lpg|HTML}}'''. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kef82zoivagf980xd7u59keu4pad9g1 Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV 4 63919 560399 558524 2026-11-01T10:40:35Z Persino 2851 /* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */ 560399 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: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|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}}. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} 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,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Tekst artykułu zakodowanego, w którym wyszukuje się pewne rozdziały, według: {{LinkZobaczTeż|rozdziały}}. | 2 = {{Code|liczba_od}} | _2 = Jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 3 = {{Code|liczba_do}} | _3 = Jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 4 = {{Code|czy_od_tylu}} | _4 = Jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 5 = {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} | _5 = 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. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}} | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Funkcja 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ę ogólną funkcję, aby uzyskać pewne zmienne, by później je wykorzystać w: {{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: {{OpisParametrów | 1 = {{Code|wzor}} | _1 = Wzór dla tekstu, który przeszukujemy. | 2 = {{Code|czy_rozdzial_rownaniowy_dodatni}} | _2 = 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. | 3 = {{Code|__FUNKCJA1}} | _3 = 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. | 4 = {{Code|__FUNKCJA2}} | _4 = Funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecim parametrem, funkcją, której wynik zwracamy bezpośrednią z tej funkcji. }} === Tabele użyte do szczególnego użycia funkcji {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}} === W funkcji sa trzy szczególne wywołania tej funkcji. ; Szablony rozdziałów centrowania{{dk}} * Tabela: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. * Tabela: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|HNumer}}. ; Znaczniki rozdziałów{{dk}} * Znaczniki centrowania jak: {{Tag|center}}. * Tabela: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, określa znaczniki nagłówków takie jak: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. ; Rozdziały dadatnie równaniowe{{dk}} * Nie potrzebują żadnej tabeli {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === 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: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Początek i koniec danego typu napisu wprowadzenia tekstu. | 2 = {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}| _2 = Spis przed jego analizą, co wtedy z niego powstaje {{LinkZobaczTeż|spis_naglowka}}. | 3 = {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} | _3 = 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. | 4 = {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} | _4 = 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: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji. | 2 = {{Code|spis_naglowka}} | _2 = Ten parametr jest liczony dla nieistniejącego parametru: {{Code|czy_spis_tresci}} {{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. | 3 = {{Code|spis_naglowka_stare}} | _3 = 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: {{Code|spis_naglowka}} {{LinkPatrz|spis_naglowka}}. | 4 = {{Code|spis_naglowka_poziom}} | _4 = 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. ; Uzyskanie elementów parametrów kodu bazy{{dk}} * Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym jest to wywołanie nagłówka, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: ** {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe centrowania, typu: {{s|Ce}}, {{s|Centruj}} i {{s|Center}} oraz nagłówki sztucznego rozdziału, takich jak: {{s|HNumer}}, ** lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe centrowania, typu: {{Tag|center}}, oraz znaczniki nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, *: oraz także uzykanego z drugiego numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. * Wnętrze uzyskujemy z dwóch poprzednich parametrów z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. ; Wyszukiwane trzy elementy zawartości obiektu{{dk}} * 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 znajduje 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, przeciwnie tylko te trzy. * 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. ; Zrzucane przez funkcje parametry{{dk}} * Tam jakiś pierwszy link musi być zakodowany bezpośrednio w takiej zawartości, aby zwrócił te cztery parametry, przeciwnie zrzuca tylko te trzy, a czwarty przyjmuje wartość nilową, to się dzieje, w przypadku pośredniego zakodowania tego linku. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek4 = tak | 5 = {{Code|pelna_nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Opis parametrów zwracanych dokończające jego dokumentację: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} | _4 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne) i {{Code|LINKZ}} (linki zewnętrzne). | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _7 = 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> ; Wykrywane linki różnego typu{{dk}} * 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 są zdefiniowane według: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.linki_szablony_elementy_spisu_rzeczy|tekst=<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ć użyte 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}}. ; Przykład wywołania fukcji{{dk}} 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> 3ztmgnsbufaz097lj9bcoo40q6xqabo 560400 560399 2026-11-01T10:41:41Z Persino 2851 /* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */ 560400 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: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|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}}. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} 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,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Tekst artykułu zakodowanego, w którym wyszukuje się pewne rozdziały, według: {{LinkZobaczTeż|rozdziały}}. | 2 = {{Code|liczba_od}} | _2 = Jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 3 = {{Code|liczba_do}} | _3 = Jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 4 = {{Code|czy_od_tylu}} | _4 = Jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 5 = {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} | _5 = 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. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}} | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Funkcja 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ę ogólną funkcję, aby uzyskać pewne zmienne, by później je wykorzystać w: {{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: {{OpisParametrów | 1 = {{Code|wzor}} | _1 = Wzór dla tekstu, który przeszukujemy. | 2 = {{Code|czy_rozdzial_rownaniowy_dodatni}} | _2 = 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. | 3 = {{Code|__FUNKCJA1}} | _3 = 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. | 4 = {{Code|__FUNKCJA2}} | _4 = Funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecim parametrem, funkcją, której wynik zwracamy bezpośrednią z tej funkcji. }} === Tabele użyte do szczególnego użycia funkcji {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}} === W funkcji sa trzy szczególne wywołania tej funkcji. ; Szablony rozdziałów centrowania{{dk}} * Tabela: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. * Tabela: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|HNumer}}. ; Znaczniki rozdziałów{{dk}} * Znaczniki centrowania jak: {{Tag|center}}. * Tabela: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, określa znaczniki nagłówków takie jak: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. ; Rozdziały dadatnie równaniowe{{dk}} * Nie potrzebują żadnej tabeli {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === 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: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Początek i koniec danego typu napisu wprowadzenia tekstu. | 2 = {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}| _2 = Spis przed jego analizą, co wtedy z niego powstaje {{LinkZobaczTeż|spis_naglowka}}. | 3 = {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} | _3 = 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. | 4 = {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} | _4 = 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: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji. | 2 = {{Code|spis_naglowka}} | _2 = Ten parametr jest liczony dla nieistniejącego parametru: {{Code|czy_spis_tresci}} {{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. | 3 = {{Code|spis_naglowka_stare}} | _3 = 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: {{Code|spis_naglowka}} {{LinkPatrz|spis_naglowka}}. | 4 = {{Code|spis_naglowka_poziom}} | _4 = 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. ; Uzyskanie elementów parametrów kodu bazy{{dk}} * Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym jest to wywołanie nagłówka, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: ** {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe centrowania, typu: {{s|Ce}}, {{s|Centruj}} i {{s|Center}} oraz nagłówki sztucznego rozdziału, takich jak: {{s|HNumer}}, ** lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe centrowania, typu: {{Tag|center}}, oraz znaczniki nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, *: oraz także uzykanego z drugiego numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. * Wnętrze uzyskujemy z dwóch poprzednich parametrów z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. ; Wyszukiwane trzy elementy zawartości obiektu{{dk}} * 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 znajduje 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, przeciwnie tylko te trzy. * 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. ; Zrzucane przez funkcje parametry{{dk}} * Tam jakiś pierwszy link musi być zakodowany bezpośrednio w takiej zawartości, aby zwrócił te cztery parametry, przeciwnie zrzuca tylko te trzy, a czwarty przyjmuje wartość nilową, to się dzieje, w przypadku pośredniego zakodowania tego linku. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek4 = tak | 5 = {{Code|pelna_nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Opis parametrów zwracanych dokończające jego dokumentację: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} | _4 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne) i {{Code|LINKZ}} (linki zewnętrzne). | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _7 = 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> ; Wykrywane linki różnego typu{{dk}} * 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 są zdefiniowane według: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.linki_szablony_elementy_spisu_rzeczy|tekst=<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ć użyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|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}}. ; Przykład wywołania fukcji{{dk}} 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> mnq2phffi66e75h8tbddmf85f65tweg 560403 560400 2026-11-01T10:44:16Z Persino 2851 /* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */ 560403 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: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|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}}. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} 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,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Tekst artykułu zakodowanego, w którym wyszukuje się pewne rozdziały, według: {{LinkZobaczTeż|rozdziały}}. | 2 = {{Code|liczba_od}} | _2 = Jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 3 = {{Code|liczba_do}} | _3 = Jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 4 = {{Code|czy_od_tylu}} | _4 = Jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 5 = {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} | _5 = 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. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _8 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}} | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _10 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Funkcja 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ę ogólną funkcję, aby uzyskać pewne zmienne, by później je wykorzystać w: {{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: {{OpisParametrów | 1 = {{Code|wzor}} | _1 = Wzór dla tekstu, który przeszukujemy. | 2 = {{Code|czy_rozdzial_rownaniowy_dodatni}} | _2 = 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. | 3 = {{Code|__FUNKCJA1}} | _3 = 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. | 4 = {{Code|__FUNKCJA2}} | _4 = Funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecim parametrem, funkcją, której wynik zwracamy bezpośrednią z tej funkcji. }} === Tabele użyte do szczególnego użycia funkcji {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}} === W funkcji sa trzy szczególne wywołania tej funkcji. ; Szablony rozdziałów centrowania{{dk}} * Tabela: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. * Tabela: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|HNumer}}. ; Znaczniki rozdziałów{{dk}} * Znaczniki centrowania jak: {{Tag|center}}. * Tabela: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, określa znaczniki nagłówków takie jak: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. ; Rozdziały dadatnie równaniowe{{dk}} * Nie potrzebują żadnej tabeli {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === 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: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Początek i koniec danego typu napisu wprowadzenia tekstu. | 2 = {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}| _2 = Spis przed jego analizą, co wtedy z niego powstaje {{LinkZobaczTeż|spis_naglowka}}. | 3 = {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} | _3 = 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. | 4 = {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} | _4 = 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: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji. | 2 = {{Code|spis_naglowka}} | _2 = Ten parametr jest liczony dla nieistniejącego parametru: {{Code|czy_spis_tresci}} {{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. | 3 = {{Code|spis_naglowka_stare}} | _3 = 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: {{Code|spis_naglowka}} {{LinkPatrz|spis_naglowka}}. | 4 = {{Code|spis_naglowka_poziom}} | _4 = 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. ; Uzyskanie elementów parametrów kodu bazy{{dk}} * Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym jest to wywołanie nagłówka, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: ** {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe centrowania, typu: {{s|Ce}}, {{s|Centruj}} i {{s|Center}} oraz nagłówki sztucznego rozdziału, takich jak: {{s|HNumer}}, ** lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe centrowania, typu: {{Tag|center}}, oraz znaczniki nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, *: oraz także uzykanego z drugiego numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. * Wnętrze uzyskujemy z dwóch poprzednich parametrów z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. ; Wyszukiwane trzy elementy zawartości obiektu{{dk}} * 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 znajduje 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, przeciwnie tylko te trzy. * 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. ; Zrzucane przez funkcje parametry{{dk}} * Tam jakiś pierwszy link musi być zakodowany bezpośrednio w takiej zawartości, aby zwrócił te cztery parametry, przeciwnie zrzuca tylko te trzy, a czwarty przyjmuje wartość nilową, to się dzieje, w przypadku pośredniego zakodowania tego linku. {{PobierzŚródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|nazwa artykułu=StronicowyParser/AnalizaSpisuRzeczy}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek4 = tak | 5 = {{Code|pelna_nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Opis parametrów zwracanych dokończające jego dokumentację: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} | _4 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne) i {{Code|LINKZ}} (linki zewnętrzne). | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _7 = 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> ; Wykrywane linki różnego typu{{dk}} * 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 są zdefiniowane według: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.linki_szablony_elementy_spisu_rzeczy|tekst= <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ć użyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkTbl|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}}. ; Przykład wywołania fukcji{{dk}} 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> j2pfv1id98i5nazivjn3mqx3ckgsqij Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI 4 63921 560404 559041 2026-11-01T10:49:28Z Persino 2851 560404 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}} == Funkcja liczy koniec zakodowanego tekstu artykułu zakodowanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, aby z niego wydzielić właściwy spis treści, za pomocą początku i tego końca tutaj policzonego. Funkcja to liczy na podstawie parametru: {{Code|liczba_obiekt_koniec}} {{LinkPatrz|liczba_obiekt_koniec}}, która jest według opisu, pozycją listy, składającej się ze znaków początkowych: {{Code|<nowiki>[%*:#;<>]</nowiki>}}, lub której twór szablonowy, ale nie zawsze szablon, może też to być twór typu: {{Code|LINKW}}, bądź: {{Code|LINKZ}}, takie coś musi znajdować się na początku linii, ale z tych linii są wybierane linie z artykułami, policzonej w pętli przed wywołaniem tej funkcji. Co wtedy w tej funkcji wyszukujemy niepustą linie nielistową pod spodem tego tekstu pod pozycją wskazywaną w tej zmiennej. Co następnie w ogólnym kodzie nadrzędnym wywołanie tej funkcji powoduje przerwanie pętli, bo już taki koniec znaleziono. Tym końcem jest: {{Code|liczba_koniec}} {{LinkPatrz|liczba_koniec}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. To jest tekst zakodowanego artykułu spisu treści. | 2 = {{Code|liczba_obiekt_koniec}} {{Patrz|liczba_obiekt_koniec}} | _2 = Koniec linii najbliższa końcowi punktu, w tekście, z linią z linkami artykularnymi książki. }} Funkcja zwraca wynik: <syntaxhighlight lang="lua"> return liczba_koniec; </syntaxhighlight> Opis parametrów zwracanych: {{OpisParametrów | 1 = {{Code|liczba_koniec}} {{Patrz|liczba_koniec}} | _1 = Znaleziony taki koniec tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, w wydzielaniu z niego właściwego spisu treści. }} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje, od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|liczba_start}} | _2 = Jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać. | 3 = {{Code|pelna_nazwa_spisu_tresci}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = 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. Kod wyszukanego szablonu zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|norma kodu}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jego numeru: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_kodu; </syntaxhighlight> Opis parametrów zwracanych: {{OpisParametrów | 1 = {{Code|liczba_koniec_szablon}} | _1 = Numer znaku wyszukanego kodu szablonu licencji: {{s|Licencja}}. | 2 = {{Code|norma_kodu}} | _2 = Norma kodu tego według z: {{LinkPatrz|norma kodu}}, tego wyszukanego szablonu. }} 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, a właściwie są wybierane tylko jednego typu szablony z tablicy, o definicji: {{Tbl|uchwyt=p.szablony_licencji|tekst= <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight>}} A kod według czego jest to robione jest: <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(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu])then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> Widzimy, że w niej są tylko wybierane szablony o nazwie dedykowane tabelą: {{LinkTbl|p.szablony_licencji}}, na podstawie uzyskanej nazwy szablonu. == {{Ś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 punktu w tym początkowym tekście. 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 znajdują się w spisie książki, i są to pewne napisy wprowadzenia tekstu z tymi osobnymi tekstami rozdziałów, czego one dotyczą, co na podstawie tego wiemy, co w nich usuwamy, co zostawiamy, w ich, 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,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, | 2 = {{Code|tab_wzor}} {{Patrz|tab_wzor}} | _2 = Tablica dwuwymiarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście: {{Code|tekst}} {{LinkPatrz|tekst}}, | 3 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka3 = tak }} Wartość zwracana: {{OpisParametrów | 1 = Jest to zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury, w którym usuwaliśmy pewne elementy. | komórka1 = tak }} Ten wzor do wydzielania tekstu z drugą wartością logiczną, jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję: {{Tbl|uchwyt=p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|tekst= <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight>}} Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego, od pierwszej pozycji tego wydzielonego tekstu, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł dane tych nagłówków, za pomocą tego pierwszego, jak nie znalazł, to według drugiego sposobu, to szuka następnych nagłówków, po końcu wyszukania udanego wcześniejszego, jeżeli znalazł według tego pierwszego, to szuka parametrów według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł to zerowe, zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możemy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są: * Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}, tzn.: {{Tbl|uchwyt=p.szablony_przypisowe|tekst= <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: {{Code|{{m|Licencja}}}}, tzn.: {{Code|{{sr|#p.szablony_licencji|p=StronicowyParser/obiekty}}}} {{LinkTbl|p.szablony_licencji}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2u0033b5urwttauht7vpg5qongkarpb Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII 4 63922 560405 559700 2026-11-01T10:51:42Z Persino 2851 /* Wyszukiwanie rozdziałów niespisowych przed artykułem lub nagłówkiem spisu treści */ 560405 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,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak }} === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ---- 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 pętli wyszukiwania, która wewnę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> Głównym wzorem wyszukiwania jest: {{OpisParametrów | 1 = {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}} | _1 = Główny wzór wyszukiwania kodów bazy kodowania tekstu, który jest potrzebny do konstrukcji większych wzorów bardziej specjalistycznych, w tym przypadku poszczególnych linii: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); </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ą: {{OpisParametrów | 1 = {{Code|liczba_start_szablon}} {{Patrz|liczba_start_szablon}} | _1 = Początek linii wyszukanej z obietem kodu kodowania, w tymm również elementu z linkiem, jeżeli tak jakąś istnieje. | 2 = {{Code|liczba_koniec_szablon}} {{Patrz|liczba_koniec_szablon}} | _2 = Koniec linii wyszukanej z obietem kodu kodowania, w tymm również elementu z linkiem, jeżeli tak jakąś istnieje. | 3 = {{Code|lista_szablon}} {{Patrz|lista_szablon}} | _3 = Odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale. Te znaki pozycji listy są: {{Code|<nowiki>[%*:#;<>]*</nowiki>}}. Może być ich liczba zero lub więcej. | 4 = {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} | _4 = Jest to ciąg odstępów {{Code|<nowiki>[^%S]*</nowiki>}} (czyli inaczej: {{Code|<nowiki>%s*</nowiki>}}) bez znaku nowej linii {{Code|\n}}. | 5 = {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} | _5 = Elementy te i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|odstepy_poczatku_rozdzialu}} {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdować się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego. | 6 = {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} | _6 = 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 inteligentne 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}}. | 7 = {{Code|kod_szablon}} {{Patrz|kod_szablon}} | _7 = Numer kodu o typie: {{Code|obiekt_szablon}} {{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ą. | 8 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _8 = Jest to dalszy kod, za pierwszym takim zauważalnym kodzie bazy kodów tekstu. }} ====== 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 znajdować kolejne możliwości: * Pozycje akceptowalne przez funkcje listy: ** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i pustym: {{Code|przerwa_szablon}} {{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: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}}, ** Dowolna lista dwukropkowa, czyli: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}}, * Początkowe znaki linii dalszego tekstu: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, tzn: nie jest: {{Code|>}}, gdy: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, są puste, * Dowolny rozdział równaniowy dodatni, gdy zmienne: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|odstepy_poczatku_rozdzialu}} {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, kończy 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: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, i {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody lnkó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, i tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}} {{Patrz|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}}. Ta funkcja zwraca dane jako: <syntaxhighlight lang="lua"> szablon,obiekt_szablon,kod_szablon,dalszy_tekst; </syntaxhighlight> {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon}} | _1 = Wnętrze kodu w bazie kodów tekstu zakodowanego. | 2 = {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}} | _2 = Typ obiektu zakodowanego kodu. | 3 = {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} | _3 = Numer danego typu obiektu, ale w postaci ciągów znakowych, a nie liczby. | 4 = {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}} | _4 = Dalszy wyszukany tekst po wykrytym linku w jakieś postaci, w jakimś większym kodzie. }} Co uzyskujemy z tych danych początkowych rozważania danego kodu: <syntaxhighlight lang="lua"> local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; </syntaxhighlight> Wytłumaczenie: {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Obiekt pochodzący od zmiennej: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}. | 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Wersja przetransformowana od liczby z: {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}}. }} * W ten sposób znaleźliśmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}. Jeśli zmienna zawartości wnętrza kodu: {{Code|szablon}} {{LinkPatrz|szablon}}, istnieje wtedy, to znaleźliśmy punkt, który należy rozważyć, a nie pętlować dalej, a ż do zakończenia zasobu danych, przy kolejnych wyszukiwaniach. ===== Gdy znaleziono taki link zwykły, wewnętrzny lub zewnętrzny, albo szablonowy inteligentny, bądź spisowy ===== ; Nadawanie zmiennym wartości{{dk}} Nadawane są wartości dwom zmiennym w postaci kodu zawartego: {{OpisParametrów | 1 = {{Code|liczba_obiekt_koniec}} {{Patrz|liczba_obiekt_koniec}} | _1 = Tej zamiennej jest madawana wartość z: {{Code|liczba_koniec_szablon}} {{LinkPatrz|liczba_koniec_szablon}}: <syntaxhighlight lang="lua"> liczba_obiekt_koniec=liczba_koniec_szablon; </syntaxhighlight> * Tej zmiennej nadajemy wartość w punkcie od razu po znalezieniu oobiektu z linią dla danego kodu. | 2 = {{Code|liczba_obiekt_start}} {{Patrz|liczba_obiekt_start}} | _2 = Tej zamiennej jest madawana wartość z: {{Code|liczba_obiekt_start}} {{LinkPatrz|liczba_obiekt_start}}: <syntaxhighlight lang="lua"> local liczba_obiekt_start=liczba_start_szablon; </syntaxhighlight> * Tej zmiennej nadajemy wartość w punkcie po znalezieniu oobiektu z linią dla danego kodu, ale jeszczze bardziej po stwierdzeniu, że nim jest: {{Code|LINKW}}, {{Code|LINKZ}} i {{Code|SZABLON}}. }} ; Badanie tam zwartych linków{{dk}} Po dojściu do instrukcji warunkowej,jeżeli znaleziono w kodzie w pewien sposób link: {{Code|LINKW}}, {{Code|LINKZ}} lub {{Code|SZABLON}} (inteligentny lub spisowy, ale szablonowy) Gdy znaleziono taki link do artykułu: {{Code|LINKW}}, czy zewnętrzny: {{Code|LINKZ}}, a nawet inteligentny, bądź spisowy, ale szablonowy: {{Code|SZABLON}}, to funkcja sprawdza, jakie go typu linkiem on jest, robi to za pomocą funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. Ta funkcja zwraca parametry: <syntaxhighlight lang="lua"> local tak,czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Opis tych elementów wyjściowych: {{OpisParametrów | 1 = {{Code|tak}} | _1 = Czy znaleziono taki link szukany w funkcji wydzielania właściwego spisu treści, lub przyjmuje wartość odpowiadającą fałszywej. | 2 = {{Code|czy_element_spisu}} | _2 = Czy to jest artykuł, czy strona w spisie treści, uważaną za niegłówną. | 3 = {{Code|numer_rodzaju_artykulu}} | _3 = Numer typu artykułu linku spisu. | 4 = {{Code|czy_podrecznik}} | _4 = Czy to jest artykuł podręcznika ksiązki, o właściwej nazwie. | 5 = {{Code|czy_okladka}} | _5 = Czy to jest strona artykularna, ale nie artykuł, dozwolony (okładkowy nawet) książki (woluminu). }} Funkcja ta robi to przy pomocy obiektu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, do sprawdzania, czy to jest artykułem linkiem dopuszczalnym książki, a jeżeli on nie jest linkiem, to jest sprawdzane: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, czy w nim jednak to się znajduje, a jeśli już tu tak, to zwracany jest wynik z pierwszym parametrem prawdziwym, z dalszymi zmiennymi dotyczących stron, a jeśli nie znalazł tu tego, to tylko zrzuca pierwszy parametr odpowiadający wartości fałszywej. ; Policzone zmienne w tym punkcie przez funkcję na podstawie parametrów linkowych{{dk}} {{OpisParametrów | 1 = Funkcja liczy zmienną: {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}}, mówiącą, jaki jest pierwszy rozdziałowy artykuł, to może być artykuł linku wewnętrznego, ale też zewnętrznego. A właściwe i jest to jego pozycja początkowa, nie końcowa. | komórka1 = tak | 2 = Generowana jest również zmienna: {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - pierwsza początkowa pozycja artykułu niebędącą artykułem okładką lub stroną niedozwolona. | komórka2 = tak | 3 = Obliczana jest pozycja końcowa artykułu dozwolonego: {{Code|liczba_nie_okladka_artykul_koniec}} {{Patrz|liczba_nie_okladka_artykul_koniec}}. | komórka3 = tak }} W powyższych przypadkach, gdy nie znaleziono takiego artykułu, jako pierwszą taką pozycję, to te one przyjmują wartość nilową (nienadaną). ===== Obsługa linków nieokładkowych (dozwolonych) artykułów książki ===== Funkcja wchodzi do instrukcji warunkowej sprawdzającą jaki jest początek właściwego spisu treści, który jeśli owy znajdzie, to pętla szukania tego zostanie przerwana, oto ona: <syntaxhighlight lang="lua"> if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then </syntaxhighlight> W przeciwnym wypadku jest pętla nieprzerywana, chyba, że skończą się dane, a ta {{ZobaczTeż|liczba_obiekt_koniec_poprz}} instrukcja: <syntaxhighlight lang="lua"> liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; </syntaxhighlight> Opis parametru: {{OpisParametrów | 1 = {{Code|liczba_obiekt_koniec_poprz}} {{Patrz|liczba_obiekt_koniec_poprz}} | _1 = Jest to poprzednia ostatnia pozycja artykułu z przestrzeni książkowej projektu polskiego {{NS|l=tak|w=tak|pk=d}}. }} ====== Znajdowanie i nadawanie wartości, pewnym zmiennym,jako wartości początkowe liczenia pozycji początkowej (startowej) ====== Na samym początku są wyznaczane lub inicjowane zmienne: ; Liczone zmienne{{dk}} {{OpisParametrów | 1 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _1 = Początek, pozycja znakowa w tekście artykułu spisu, nieokładkowego artykułu: <syntaxhighlight lang="lua"> local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; </syntaxhighlight> Jeśli nie ma zmiennej: {{Code|liczba_nie_okladka_artykul}} {{LinkPatrz|liczba_nie_okladka_artykul}}, to ustalamy ją ten parametr w ramce za pomocą: {{Code|liczba_obiekt_start}} {{LinkPatrz|liczba_obiekt_start}}. | 2 = {{Code|liczba_obiekt_koniec_nowe}} {{Patrz|liczba_obiekt_koniec_nowe}} | _2 = Koniec, pozycja znakowa w tekście artykułu spisu, nieokładkowego artykułu: <syntaxhighlight lang="lua"> local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; </syntaxhighlight> Jeśli nie ma zmiennej: {{Code|liczba_nie_okladka_artykul_koniec}} {{LinkPatrz|liczba_nie_okladka_artykul}}, to ustalamy ją ten parametr w ramce za pomocą: {{Code|liczba_obiekt_start}} {{LinkPatrz|liczba_obiekt_koniec}}. | 3 = {{Code|liczba_obiekt_start_nowe_temp}} {{Patrz|liczba_obiekt_start_nowe_temp}} | _3 = Jest to stara pozycja: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}. | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Zmienna pomocnicza: <syntaxhighlight lang="lua"> local czy_ten_rozdzial=true; </syntaxhighlight> | 5 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}}| _5 = Zmienna pomocnicza: <syntaxhighlight lang="lua"> czy_bez_naglowka=nil; </syntaxhighlight> }} ====== Znajdowanie nagłówków spisu treści dla danego artykułu podręcznika ====== Znajdujemy nagłówek spisu treści w spisie artykułu, typu: '''Spis treści''', czy: '''SPIS RZECZY''', i na podstawie tego pewne zmienne przy pomocy: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, wyszukujący różnego rodzaju nagłówki dodatnie, tzn.: {{LinkZobaczTeż|typy rozdziałów|StronicowyParser/Rozdziały}}, dzięki podfunkcji jej pomocniczej: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, która sprawdza, czy napis wprowadzenia tekstu jest nagłówkiem spisu treści różnie znormowanym i napisanym. Funkcja generuje zmienne: <syntaxhighlight lang="lua"> local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start; </syntaxhighlight> Wytłumaczenie zmiennych: {{OpisParametrów | 1 = {{Code|liczba_spis_tresci_start}} {{Patrz|liczba_spis_tresci_start}} | _1 = Pozycja początkowa napisu wprowadzenia tekstu rozdziału dodatniego. | 2 = {{Code|liczba_spis_tresci_koniec}} {{Patrz|liczba_spis_tresci_koniec}} | _2 = Jak powyżej, tylko, że końcowa. | 3 = {{Code|spis_naglowka_dodatni_start}} {{Patrz|spis_naglowka_dodatni_start}} | _3 = Nagłówek po policzeniu. | 4 = {{Code|spis_naglowka_dodatni_stare_start}} {{Patrz|spis_naglowka_dodatni_stare_start}} | _4 = To samo, co powyżej, ale przed wyznaczeniem. | 5 = {{Code|poziom_naglowka_start}} {{Patrz|poziom_naglowka_start}} | _5 = Poziom nagłówka dodatniego, może być o wartości {{Code|nil}}. }} ====== Wyszukiwanie rozdziałów niespisowych przed artykułem lub nagłówkiem spisu treści ====== Wyszukujemy rozdział następny spełniający pewne warunki nad napisem wprowadzenia tekstu nagłówka spisu treści, za pomocą: {{LinkŚródtytuł|p.SzukanieKolejnychSekcji|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. A jeżeli taki spis treści nie istnieje, to nad artykułem ostatnim wyszukanym w kolejnym obiegu pętli. Jej zwracane parametry to: <syntaxhighlight lang="lua"> local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Te parametry sa Opis parametrów, ten nagłówek nie musi być dodatni, może być ujemny, czy zerowy, tzn.: {{LinkZobaczTeż|typy rozdziałów|StronicowyParser/Rozdziały}} {{ZobaczTeż|p.SzukanieKolejnychSekcji}}: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} {{Patrz|liczba_start_naglowek}} | _1 = Znak początku wyszukania nagłówka nie spisu treści. | 2 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _2 = Znak końca wyszukania tego powyżej. | 3 = {{Code|poziom_naglowka}} {{Patrz|poziom_naglowka}} | _3 = Poziom tego nagłówka. }} ; Przed uruchomieniem tej funkcji wyszukiwania wielu nagłówków{{dk}} Wtedy są zbierane są dane w tabeli {{Patrz|tab_zmienne}}: {{Tbl|uchwyt=tab_zmienne|tekst= <syntaxhighlight lang="lua"> 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, }; </syntaxhighlight>}} A także są inicjowane zmienne: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Opis zmiennych inicjowanych: {{OpisParametrów | 1 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _1 = Mówi, czy zmienne w tabeli: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}, mają być zerowane do wartości nilowej, tzn. {{Code|nil}}, jeśli zajdzie taka potrzeba. | 2 = {{Code|liczba_obiekt_start_nowe}} | _2 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, tylko zaktualizowana o nagłówek istniejący spisu treści, a jeśli go nie ma, to według kodu przyjmuje wartość poprzednią. }} ; Po uruchomieniu tej funkcji znajdowania wielu nagłówków{{dk}} Na podstawie parametrów: {{LinkZobaczTeż|p.SzukanieKolejnychSekcji}} inicjowane są wtedy zmienne: {{Code|tab_zmienne}} {{LinkTbl|tab_zmienne}}, według kodu (podobnie jak w tym linku referencji odnośnika): <syntaxhighlight lang="lua"> 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; </syntaxhighlight> ====== Powtórzenie wyszukiwania w przypadku jego nieprawidłowego znalezienia tych rozdziałów ====== ; Nadawanie zmiennym wartości ze strony innych{{dk}} Gdy zmienna: {{Code|czy_ten_rozdzial}} {{LinkPatrz|czy_ten_rozdzial}}, przyjmuje wartość odpowiadającą fałszywej, wtedy wchodzimy do instrukcji warunkowej, a następnie dalej do innej przy sprawdzeniu, czy: {{Code|liczba_obiekt_start}} {{LinkPatrz|liczba_obiekt_start}}, jest nierówne tej: {{Code|liczba_obiekt_start_nowe_temp}} {{LinkPatrz|liczba_obiekt_start_nowe_temp}}, a jeśli tak to wchodzimy do instrukcji warunkowej, która to poprzednia, jak i ta, nie ma instrukcji: '''else'''. Po wejściu do instrukcji warunkowej inicjujemy pewne zmienne innymi: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} | _1 = Nadawanie wartości końca wyszukiwania od tyłu: <syntaxhighlight lang="lua"> liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; </syntaxhighlight> | 2 = {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}} | _2 = Nadawanie wartości początku wyszukiwania przy liczeniu funkcji zwracanej przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. <syntaxhighlight lang="lua"> liczba_obiekt_start_nowe=liczba_obiekt_start; </syntaxhighlight> | 3 = {{Code|czy_ten_rozdzial}} {{LinkPatrz|czy_ten_rozdzial}} | _3 = Nadawanie wartości, czy ma zerować zmienne w funkcji zwracanej przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. <syntaxhighlight lang="lua"> czy_ten_rozdzial=true; </syntaxhighlight> Tą zmienną inicjujemy podzmienną tabelowa: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}, przy pomocy: {{Code|czy_ten_rozdzial}} {{LinkPatrz|czy_ten_rozdzial}}, według: <syntaxhighlight lang="lua"> tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; </syntaxhighlight> }} ; Nadawanie zmiennych rozdziałowych ze strony jednej tylko funkcji wyszukujących wiele rozdziałów w jednej funkcji przy wykorzystywaniu innych{{dk}} Wywołujemy funkcję: {{LinkŚródtytuł|p.SzukanieKolejnychSekcji|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, wyszukujące obiekty od: {{Code|liczba_obiekt_start}} {{LinkPatrz|liczba_obiekt_start}}, do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, sprawdzając tekst pomiędzy od: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, do najbliższego wyszukanego rozdziału, czy jest prawidłowy, to jest sprawdzane dzięki: {{LinkŚródtytuł|p.AnalizowanieSekcjowe|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. Ta funkcja nadaje wartość zmiennym: {{LinkZobaczTeż|p.SzukanieKolejnychSekcji}}. ; Końcowe obliczenia inicjujące podobne zmienne lokalne z tabeli{{dk}} {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}{{dk}} Nadajemy wartości normalnym zmiennym o pewnej nazwie od wartości z tabeli o nazwach o takich samych kluczach, tzn. na podstawie: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Te zmienne mają jakieś sensowne wartości, jeśli pod warunkiem, nie zostały one wyzerowane lub nie mogły nastąpić takie operacje ze względu na wartość zmiennej: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}. ====== Wybieranie pomiędzy znalezionym rozdziałem, a spisem treści ====== Na podstawie wartości: {{Code|liczba_spis_tresci_start}} {{LinkPatrz|liczba_spis_tresci_start}}, oraz zmiennych poziomu: {{Code|poziom_naglowka_start}} {{LinkPatrz|poziom_naglowka_start}}, i {{Code|poziom_naglowka}} {{LinkPatrz|poziom_naglowka}}, jest wybierana w ten sposób zmienna: {{Code|liczba_spis_tresci_start}} {{LinkPatrz|liczba_spis_tresci_start}}, lub {{Code|liczba_start_naglowek}} {{LinkPatrz|liczba_start_naglowek}}. Najpierw pierwszeństwo ma ta pierwsza, a później ta druga, jeśli by wybrano tą nilową zmienną pierwszą. ====== Sprawdzanie aktualnej pozycji linkowej ====== ; Sprawdzanie warunku, spełnienie jego pozytywne, a jak jest w przypadku przeciwnym{{dk}} * W przypadku przeciwnym instrukcji tej warunkowej, którą jest: <syntaxhighlight lang="lua"> if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then </syntaxhighlight> Nadawane są wartości zmiennych: dla: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, ze strony od: {{Code|liczba_obiekt_koniec_nowe}} {{LinkPatrz|liczba_obiekt_koniec_nowe}}, a parametrowi: {{Code|liczba_nie_okladka_artykul_koniec}} {{LinkPatrz|liczba_nie_okladka_artykul_koniec}}, usuwana jest natomiast wszelaka wartość. A później jest nadawana wartość zmiennej: {{Code|liczba_obiekt_koniec_poprz}} {{LinkPatrz|liczba_obiekt_koniec_poprz}}, poprzez instrukcję: {{LinkZobaczTeż|liczba_obiekt_koniec_poprz}}. * W przypadku spełnienia tego warunku w poleceniu warunkowym, robimy na samym końcu obiegu pętli: {{LinkZobaczTeż|liczba_obiekt_koniec_poprz}},jeśli pętla wcześniej nie została przerwana przy pomocy prawdziwej zmiennej: {{Code|czy_break}} {{LinkPatrz|czy_break}}, a przedtem inne instrukcje, takie: ; Nadawanie wartości pewnym zmiennym{{dk}} Wtedy nadajemy zmiennej: {{Code|czy_bez_naglowka}} {{LinkPatrz|czy_bez_naglowka}}, wartość według: <syntaxhighlight lang="lua"> czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; </syntaxhighlight> Dalej wykonujemy instrukcje opisane w następnych podrozdziałach średnikowych, jako: ; Instrukcja{{dk}} {{nobold|wtedy}}, i w innym przypadku{{dk}} {{nobold|przeciwnie}}{{dk}} * Rozkaz w rozgałezieniu instrukcji warunkowej: {{Tt|wtedy}}: Sprawdzamy nad punktem: {{Code|liczba_start_naglowek}} {{LinkPatrz|liczba_start_naglowek}}, sprawdza, czy jakiś powyżej najbliższy obiekt jest: {{Code|LINKW}}, {{Code|LINKZ}} i {{Code|SZABLON}}, linki inteligentny, czy spisowy, ale szablonowy, wtedy działa funkcja: {{LinkŚródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, wtedy druga zwracana zmienna jest {{Code|true}}, przeciwnie ona zwraca {{Code|false}} z pierwszą początkową wartością wyszukiwania. Wtedy jest zwracana zmienna: {{OpisParametrów | 1 = {{Code|liczba_przed_rozdzialem}} {{Patrz|liczba_przed_rozdzialem}} | _1 = Wartość zwracana pozycji z ostatniej funkcji. | 2 = {{Code|czy_znajdz}} {{Patrz|czy_znajdz}} | _2 = Czy powyżej tego punktu znakowego są linki. }} Dalej od tego samego punktu, jest liczony rozdział dodatni: {{LinkZobaczTeż|typy rozdziałów|StronicowyParser/Rozdziały}}, z funkcji: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, która zwraca zmienną: {{Code|liczba_start_naglowek_przed}} {{Patrz| liczba_start_naglowek_przed}}. Dalej jest wyznaczany argument: {{Code|liczba_przed}} {{Patrz|liczba_przed}}, sposobem: <syntaxhighlight lang="lua"> local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_start_naglowek_przed) or liczba_przed_rozdzialem); </syntaxhighlight> Po tym jest wywoływana funkcja: {{LinkŚródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, która liczy,czy przed tym znajduje się rozdział zerowy, jak nie, to czy nie ma linku żadnego, a jak nie, to czy przed tym jest rozdział cudzysłowowy, wartością zwracaną jest: {{Code|liczba_start}} {{Patrz|liczba_start}} - pozycja początkowa pozycji prawdopodobnej spisu właściwego, i {{Code|czy_break}} {{Patrz|czy_break}} - czy pętla ma być przerwana. * Przeciwnie: {{Tt|przeciwnie}}: Wywołujemy funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, z pewną anonimową funkcją: <syntaxhighlight lang="lua"> function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) ... end; </syntaxhighlight> Ta funkcja jest wstawiana miejsce wywołania funkcji: {{Code|p.AnalizowanieSekcjowe}} {{LinkŚródtytuł|p.AnalizowanieSekcjowe|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, aby sprawdzić, czy pomiędzy z tymi elementami jest niepoprawny ciąg tekstowy, czyli taki jaki tam nie powinien się pojawić, a jeśli jednak się pojawił, to ta funkcja ma obsługę tego, i w zależności od tego może zwrócić odpowiednie elementy, w tym przypadku prawdziwości zwróconych wartości przez procedurę anonimową, wtedy ta funkcja zwraca wartość {{Code|false}}, przeciwnie ona zwróci poprawne dane, w postaci pewnych zmiennych. Która jest uruchamiana dla parametrów pomiędzy: {{Code|liczba_koniec_naglowek_nowe}} {{Patrz|liczba_koniec_naglowek_nowe}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, dla którego liczymy ciąg za pierwszym takim puntem i przed drugim również takim, z którego usuwamy zmienne szablonowe: {{Code|SZABLON}}, i sprawdzamy, czy otrzymamy ciąg z samych znaków odstępów, a jeżeli ona nie jest, to otrzymamy wartość z tej funkcji {{Code|true}}, przeciwnie: {{Code|nil}}. Z tej funkcji otrzymujemy parametry wytłumaczone w punkcie {{LinkZobaczTeż|p.SzukanieKolejnychSekcji}}: <syntaxhighlight lang="lua"> local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Jeżeli taka zmienna: {{Code|liczba_start_naglowek}} {{LinkPatrz|liczba_start_naglowek}}, rzeczywiście istnieje, wtedy zmiennej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, z tej istniejącej zmiennej. Dalej wywołujemy funkcję: {{LinkŚródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, szukając elementów, od tyłu, pomiędzy: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, a {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. Następnym punktem jest wyznaczenie zmiennej: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, w celu wyznaczenia prawdopodobnego początku liczenia właściwego spisu treści i zmiennej: {{Code|czy_break}} {{LinkPatrz|czy_break}}, czy przerwać pętle nadrzędną, tą funkcją wyznaczania tych parametrów jest: {{LinkŚródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. ; Kiedy pętla nadrzędna jest przerywana{{dk}} Jeśli zmienna w tych dwóch rozgałęzieniach pętli: '''wtedy''', i '''else''', wartość: {{Code|czy_break}} {{LinkPatrz|czy_break}}, przyjmuje wartość fałszywą, wtedy następuje kolejny obieg pętli, przeciwnie jest przerywana, a {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, jest początkową pozycją właściwego spisu treści z zakodowanego artykułu, tym razem na pewno. ====== Zebrane dane o początku ustalenia właściwego spisu ====== Jeśli w pętli zakończyły się dane, lub nie otrzymano żadnej zmiennej: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, z konkretną wartością, to funkcja zwraca ciąg pusty, czyli właściwy spis treści jest równy ciągowi pustemu. A jeśli mamy jakieś treściwe dane tej zmiennej, to jest to początek znakowy w zmiennej: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, tego właściwego spisu w spisie. ==== Punkt końcowy ==== Punktem początkowym wyszukiwania od tyłu jest punkt równy końcowi tekstu artykułu spisu treści, tzn.: <syntaxhighlight lang="lua"> local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; </syntaxhighlight> Parametry początku wyszukiwania od tyłu: {{OpisParametrów | 1 = {{Code|liczba_obiekt_start_od_tylu}} {{Patrz|liczba_obiekt_start_od_tylu}} | _1 = Punkt początkowy wyszukiwania od tyłu w tekście, artykułu spisu, tzn.: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. }} Wyszukujemy tekst według pewnego wzoru, na podstawie funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Tym wzorem w tym wywołaniu funkcji jest: <syntaxhighlight lang="lua"> 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); </syntaxhighlight> Ogólnym wzorem, którym jest powyżej, to: {{Code|szablon_normy_kodowania_szablonu}} {{LinkPatrz|szablon_normy_kodowania_szablonu}}. Tą funkcję wywołuje się w {{ZobaczTeż|koniec wyszukiwania-pętla}} pętli, aż do zakończenia danych wyszukiwania lub przerwania, przy wykryciu pewnego punktu końca właściwego spisu treści. Zmienne te wyszukiwania są opisane, i znaczą praktycznie to samo, co w wyszukiwaniu punktu początkowego, tzn.: {{OpisParametrów | 1 = {{Code|liczba_start_szablon}} {{LinkPatrz|liczba_start_szablon}} | _1 = Punkt znalezienia początki ciągu według wzoru, ale od tyłu. | 2 = {{Code|liczba_koniec_szablon}} {{LinkPatrz|liczba_koniec_szablon}} | _2 = To samo, co powyżej, tylko że końca. | 3 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Linia cała wyszukiwana, bez znaków nowej linii, tzn. na jej początku i końcu. | 4 = {{Code|lista_szablon}} | _4 = Jak w: {{LinkPatrz|lista_szablon}}. | 5 = {{Code|przerwa_szablon}} | _5 = jak w: {{LinkPatrz|przerwa_szablon}}. | 6 = {{Code|obiekt_szablon}} | _6 = Jak w: {{LinkPatrz|obiekt_szablon}}. | 7 = {{Code|kod_szablon}} | _7 = Jak w: {{LinkPatrz|kod_szablon}}. | 8 = {{Code|dalszy_tekst}} | _8 = Jak w: {{LinkPatrz|dalszy_tekst}}. }} ===== Punkty wyszukiwania końca spisu właściwego ze spisu treści podręcznika ===== Dalszymi instrukcjami pętli {{LinkZobaczTeż|koniec wyszukiwania-pętla}}, jest sprawdzenie, czy zmienna: {{Code|liczba_start_szablon}} {{LinkPatrz|liczba_start_szablon}}, istnieje, a jeśli nie, to ta pętla jest przerywana jako zakończenie danych wyszukiwania z punktu do punktu znakowego od tyłu w pewnym większym określonym przedziale. Ustalamy następny punkt wyszukiwania od tyłu równy: {{Code|liczba_obiekt_start_od_tylu}} {{LinkPatrz|liczba_obiekt_start_od_tylu}}, od wartości zmiennej: {{Code|liczba_start_szablon}} {{LinkPatrz|liczba_start_szablon}}, dokładnie według kodu: <syntaxhighlight lang="lua"> liczba_obiekt_start_od_tylu=liczba_start_szablon; </syntaxhighlight> ; Znajdowanie punktów znakowych od tyłu, bez pętlowania dalej, o ile to jest możliwe, jeśli te linie zawierają obiekty typu{{dk}} {{nobold|{{Code|LINKW}}}}, {{nobold|{{Code|LINKZ}}}} lub {{nobold|{{Code|SZABLON}}}} (linki inteligentne, czy spisowe, ale szablonowe){{dk}} Funkcja możliwe może przerwać pętlowanie, o ile jest to możliwe, jeśli jest spełniony, któreś z warunków: * Na początku są znaki pozycji listy ze znaków: {{Code|<nowiki>[%*:#;<>]</nowiki>}}. * Jeśli ciąg znakowych tego z: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}} i {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}. * Jeśli powyższe nie jest spełnione to dla: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, równe ciągowi pustemu, wtedy: ** To ciągi: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}} i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, kolejno muszą się zaczynać i kończyć na znaki równa się, czyli: {{Code|{{=}}}}. Jeśli powyższe punkty nie są spełnione, to szukamy pierwszego linku w obiekcie o kodzie dla: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, według znalezionego, jeśli, wzoru: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Ta funkcja zwraca elementy (wartości - zmienne, zwracane): <syntaxhighlight lang="lua"> szablon,obiekt_szablon,kod_szablon,dalszy_tekst; </syntaxhighlight> Jeśli zmienna: {{Code|szablon}} {{LinkPatrz|szablon}}, istnieje, wtedy znaleziono taki punkt, w którym należy brać pod uwagę, czyli rozważyć. ; Znajdowanie końca spisu właściwego treści{{dk}} {{nobold|{{Code|liczba_start}}}}, który trzeba skorygować{{dk}} Z danych początkowych: {{Code|obiekt}} {{LinkPatrz|obiekt}} (jest to nic innego jak: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}), i {{Code|kod}} {{LinkPatrz|kod}} (uzyskanego z: {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}}), tylko jest to wersja liczbowa, a nie znakowa. Na podstawie tego uzyskujemy, wnętrze kodu z: {{Code|szablon}} {{LinkPatrz|szablon}}, lub z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, uzyskanego z kluczy: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}. Jeśli jest spełnione, tzn. zależność od punktu początkowego spisu właściwego w zależności od prawdopodobnego punktu końcowego, który mamy ustalić: <syntaxhighlight lang="lua"> if(liczba_start<=liczba_obiekt_start)then </syntaxhighlight> A jeśli jest spełniona ta instrukcja warunkowa, wtedy jest wywoływana funkcja: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}.ona sprawdza, czy parametry: {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}, czy są kodami linków, a jeśli nie, to czy w: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są linki, a jeśli je tam znalazł, to funkcja zwraca {{ZobaczTeż|kiedy linki}} wartość prawdziwą. Kiedy jest prawdziwe {{LinkZobaczTeż|kiedy linki}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|p.PoliczKoniecZakodowanegoTekstuArtykularnego|StronicowyParser/AnalizaSpisuRzeczy/Tom VI}}, co ona wyszukuje niepustą linie nielistową pod spodem tej linii: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, pod pozycją wskazywaną w tej zmiennej, co po wywołaniu tej funkcji pętla jest przerywana. Funkcja liczy koniec spisu właściwego: {{Code|liczba_koniec}} {{Patrz|liczba_koniec}}, który trzeba skorygować. ===== Znajdowanie napisów wprowadzenia testu wraz z linkami artykułów ===== Szukamy, od tyłu od pozycji równą rozmiarowi zakodowanego i przetworzonego artykułu, rozdziały dodatniego: {{LinkZobaczTeż|typy rozdziałów|StronicowyParser/Rozdziały}}, przy pomocy funkcji: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, dla tekstu rozdziału zakodowanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. Zmienne są ustalane takie: <syntaxhighlight lang="lua"> local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial; </syntaxhighlight> O znaczeniach od czego są one: {{OpisParametrów | 1 = {{Code|liczba_rozdzial_start}} {{Patrz|liczba_rozdzial_start}} | _1 = Początek wyszukanej linii rozdziału dodatniego. | 2 = {{Code|liczba_rozdzial_koniec}} {{Patrz|liczba_rozdzial_koniec}} | _2 = Jak powyżej, ale to oto jest koniec. | 3 = {{Code|rozdzial_nazwa}} {{Patrz|rozdzial_nazwa}} | _3 = Tekst nagłówka zakodowanego przed rozwinięciem. | 4 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _4 = Tekst nagłówka, tego powyżej, po rozwinięciu. }} Jeśli pozycja tego wyszukanego rozdziału jest mniejsza lub nie istnieje, to pętla jest przerywana, przeciwnie przy pomocy: {{LinkŚródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jest sprawdzane, czy w nim są jakieś linki, co najmniej jeden. A jeśli tak, to jest liczony nowy koniec spisu treści właściwego ze spisu, czyli: {{Code|liczba_koniec}} {{LinkPatrz|liczba_koniec}}, od zmiennej: {{Code|liczba_rozdzial_koniec}} {{LinkPatrz|liczba_rozdzial_koniec}}, którym jest końcem linii wyszukanego tego rozdziału. ==== Wydzielanie spisu właściwego na podstawie punktu startowego i końcowego właściwego spisu treści z całego artykułu danego spisu książki ==== Gdy nie znaleziono końca właściwego spisu treści, lub punkt początka znakowego jest większy niż końcowy, to funkcja zwraca spis właściwy w postaci pustego ciągu znakowego. ===== Znajdowanie szablonu licencji i pierwsza korekcja końca spisu ===== Szukamy punkt końca, gdzie jest umieszczony szablon licencji: {{Code|{{s|Licencja}}}}, jeśli on istnieje, to szukamy przy pomocy: {{LinkŚródtytuł|p.KoniecStronyLicencja|StronicowyParser/AnalizaSpisuRzeczy/Tom VI}}, i jest większy niż koniec spisu właściwego: {{Code|liczba_koniec}} {{LinkPatrz|liczba_koniec}}, to ustalamy jego koniec nowy, zmieniając jego wartość na: {{Code|licencja_koniec}} {{Patrz|licencja_koniec}}. ===== Wydzielanie właściwego spisu treści z artykułu zawartości spisu ===== Wydzielamy spis właściwy treści ze spisu z tekstu artykułu zakodowanego tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, od pozycji: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, do {{Code|liczba_koniec}} {{LinkPatrz|liczba_koniec}}, przy pomocy funkcji: {{LzLua|mw.ustring.sub}}, inicjując w ten sposób zmienną: {{Code|tekst}} {{Patrz|tekst}}. Robimy to kodem: <syntaxhighlight lang="lua"> local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); </syntaxhighlight> ====== Redagowania testu zawartości spisu o nazwie: {{Tt|Bibliografia}} i {{Tt|Literatura}} - zmienianie i usuwanie szablonów i pewnych linków ====== Przy pomocy: {{linkŚródtytuł|p.KorygowanieTekstuSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom VI}}, w dwóch okrążeniach modyfikujemy, czyli korygujmy tekst właściwego spisu treści: {{Code|tekst}} {{LinkPatrz|tekst}}. Do definiowania ile jest tych tak naprawdę okrążeń, to zależy od zdefiniowanej tabelki w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, którą definiujemy {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|StronicowyParser/AnalizaSpisuRzeczy/Tom VI}}. ==== Co uzyskaliśmy w wyniku działania funkcji wydzielania konkretnego spisu treści z całego artykułu spisu ==== W wyniku skorygowanego spisu właściwego tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, otrzymujemy fragment jego, z którego w łatwy sposób bez pomylenia możemy wydzielić nagłówki z ich teksttami rozdziałów, a w ich tekstach i napisach wprowadzenia tekstów rozróżniamy w odpowiedni sposób zakodowane linki pisane jako: {{Code|LINKW}}, {{Code|LINKZ}} i {{Code|SZABLON}} (linki inteligentne, także również spisowe, ale szablonowe). {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> mij5k2nux5oqpnk2lg3m3sz2zapflhh 560406 560405 2026-11-01T10:53:53Z Persino 2851 560406 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,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak }} === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ---- 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 pętli wyszukiwania, która wewnę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> Głównym wzorem wyszukiwania jest: {{OpisParametrów | 1 = {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}} | _1 = Główny wzór wyszukiwania kodów bazy kodowania tekstu, który jest potrzebny do konstrukcji większych wzorów bardziej specjalistycznych, w tym przypadku poszczególnych linii: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); </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ą: {{OpisParametrów | 1 = {{Code|liczba_start_szablon}} {{Patrz|liczba_start_szablon}} | _1 = Początek linii wyszukanej z obietem kodu kodowania, w tymm również elementu z linkiem, jeżeli tak jakąś istnieje. | 2 = {{Code|liczba_koniec_szablon}} {{Patrz|liczba_koniec_szablon}} | _2 = Koniec linii wyszukanej z obietem kodu kodowania, w tymm również elementu z linkiem, jeżeli tak jakąś istnieje. | 3 = {{Code|lista_szablon}} {{Patrz|lista_szablon}} | _3 = Odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale. Te znaki pozycji listy są: {{Code|<nowiki>[%*:#;<>]*</nowiki>}}. Może być ich liczba zero lub więcej. | 4 = {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} | _4 = Jest to ciąg odstępów {{Code|<nowiki>[^%S]*</nowiki>}} (czyli inaczej: {{Code|<nowiki>%s*</nowiki>}}) bez znaku nowej linii {{Code|\n}}. | 5 = {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} | _5 = Elementy te i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|odstepy_poczatku_rozdzialu}} {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdować się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego. | 6 = {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} | _6 = 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 inteligentne 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}}. | 7 = {{Code|kod_szablon}} {{Patrz|kod_szablon}} | _7 = Numer kodu o typie: {{Code|obiekt_szablon}} {{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ą. | 8 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _8 = Jest to dalszy kod, za pierwszym takim zauważalnym kodzie bazy kodów tekstu. }} ====== 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 znajdować kolejne możliwości: * Pozycje akceptowalne przez funkcje listy: ** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i pustym: {{Code|przerwa_szablon}} {{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: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}}, ** Dowolna lista dwukropkowa, czyli: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}}, * Początkowe znaki linii dalszego tekstu: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, tzn: nie jest: {{Code|>}}, gdy: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, są puste, * Dowolny rozdział równaniowy dodatni, gdy zmienne: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|odstepy_poczatku_rozdzialu}} {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, kończy 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: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, i {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody lnkó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, i tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}} {{Patrz|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}}. Ta funkcja zwraca dane jako: <syntaxhighlight lang="lua"> szablon,obiekt_szablon,kod_szablon,dalszy_tekst; </syntaxhighlight> {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon}} | _1 = Wnętrze kodu w bazie kodów tekstu zakodowanego. | 2 = {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}} | _2 = Typ obiektu zakodowanego kodu. | 3 = {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} | _3 = Numer danego typu obiektu, ale w postaci ciągów znakowych, a nie liczby. | 4 = {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}} | _4 = Dalszy wyszukany tekst po wykrytym linku w jakieś postaci, w jakimś większym kodzie. }} Co uzyskujemy z tych danych początkowych rozważania danego kodu: <syntaxhighlight lang="lua"> local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; </syntaxhighlight> Wytłumaczenie: {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Obiekt pochodzący od zmiennej: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}. | 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Wersja przetransformowana od liczby z: {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}}. }} * W ten sposób znaleźliśmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}. Jeśli zmienna zawartości wnętrza kodu: {{Code|szablon}} {{LinkPatrz|szablon}}, istnieje wtedy, to znaleźliśmy punkt, który należy rozważyć, a nie pętlować dalej, a ż do zakończenia zasobu danych, przy kolejnych wyszukiwaniach. ===== Gdy znaleziono taki link zwykły, wewnętrzny lub zewnętrzny, albo szablonowy inteligentny, bądź spisowy ===== ; Nadawanie zmiennym wartości{{dk}} Nadawane są wartości dwom zmiennym w postaci kodu zawartego: {{OpisParametrów | 1 = {{Code|liczba_obiekt_koniec}} {{Patrz|liczba_obiekt_koniec}} | _1 = Tej zamiennej jest madawana wartość z: {{Code|liczba_koniec_szablon}} {{LinkPatrz|liczba_koniec_szablon}}: <syntaxhighlight lang="lua"> liczba_obiekt_koniec=liczba_koniec_szablon; </syntaxhighlight> * Tej zmiennej nadajemy wartość w punkcie od razu po znalezieniu oobiektu z linią dla danego kodu. | 2 = {{Code|liczba_obiekt_start}} {{Patrz|liczba_obiekt_start}} | _2 = Tej zamiennej jest madawana wartość z: {{Code|liczba_obiekt_start}} {{LinkPatrz|liczba_obiekt_start}}: <syntaxhighlight lang="lua"> local liczba_obiekt_start=liczba_start_szablon; </syntaxhighlight> * Tej zmiennej nadajemy wartość w punkcie po znalezieniu oobiektu z linią dla danego kodu, ale jeszczze bardziej po stwierdzeniu, że nim jest: {{Code|LINKW}}, {{Code|LINKZ}} i {{Code|SZABLON}}. }} ; Badanie tam zwartych linków{{dk}} Po dojściu do instrukcji warunkowej,jeżeli znaleziono w kodzie w pewien sposób link: {{Code|LINKW}}, {{Code|LINKZ}} lub {{Code|SZABLON}} (inteligentny lub spisowy, ale szablonowy) Gdy znaleziono taki link do artykułu: {{Code|LINKW}}, czy zewnętrzny: {{Code|LINKZ}}, a nawet inteligentny, bądź spisowy, ale szablonowy: {{Code|SZABLON}}, to funkcja sprawdza, jakie go typu linkiem on jest, robi to za pomocą funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. Ta funkcja zwraca parametry: <syntaxhighlight lang="lua"> local tak,czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Opis tych elementów wyjściowych: {{OpisParametrów | 1 = {{Code|tak}} | _1 = Czy znaleziono taki link szukany w funkcji wydzielania właściwego spisu treści, lub przyjmuje wartość odpowiadającą fałszywej. | 2 = {{Code|czy_element_spisu}} | _2 = Czy to jest artykuł, czy strona w spisie treści, uważaną za niegłówną. | 3 = {{Code|numer_rodzaju_artykulu}} | _3 = Numer typu artykułu linku spisu. | 4 = {{Code|czy_podrecznik}} | _4 = Czy to jest artykuł podręcznika ksiązki, o właściwej nazwie. | 5 = {{Code|czy_okladka}} | _5 = Czy to jest strona artykularna, ale nie artykuł, dozwolony (okładkowy nawet) książki (woluminu). }} Funkcja ta robi to przy pomocy obiektu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, do sprawdzania, czy to jest artykułem linkiem dopuszczalnym książki, a jeżeli on nie jest linkiem, to jest sprawdzane: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, czy w nim jednak to się znajduje, a jeśli już tu tak, to zwracany jest wynik z pierwszym parametrem prawdziwym, z dalszymi zmiennymi dotyczących stron, a jeśli nie znalazł tu tego, to tylko zrzuca pierwszy parametr odpowiadający wartości fałszywej. ; Policzone zmienne w tym punkcie przez funkcję na podstawie parametrów linkowych{{dk}} {{OpisParametrów | 1 = Funkcja liczy zmienną: {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}}, mówiącą, jaki jest pierwszy rozdziałowy artykuł, to może być artykuł linku wewnętrznego, ale też zewnętrznego. A właściwe i jest to jego pozycja początkowa, nie końcowa. | komórka1 = tak | 2 = Generowana jest również zmienna: {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - pierwsza początkowa pozycja artykułu niebędącą artykułem okładką lub stroną niedozwolona. | komórka2 = tak | 3 = Obliczana jest pozycja końcowa artykułu dozwolonego: {{Code|liczba_nie_okladka_artykul_koniec}} {{Patrz|liczba_nie_okladka_artykul_koniec}}. | komórka3 = tak }} W powyższych przypadkach, gdy nie znaleziono takiego artykułu, jako pierwszą taką pozycję, to te one przyjmują wartość nilową (nienadaną). ===== Obsługa linków nieokładkowych (dozwolonych) artykułów książki ===== Funkcja wchodzi do instrukcji warunkowej sprawdzającą jaki jest początek właściwego spisu treści, który jeśli owy znajdzie, to pętla szukania tego zostanie przerwana, oto ona: <syntaxhighlight lang="lua"> if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then </syntaxhighlight> W przeciwnym wypadku jest pętla nieprzerywana, chyba, że skończą się dane, a ta {{ZobaczTeż|liczba_obiekt_koniec_poprz}} instrukcja: <syntaxhighlight lang="lua"> liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; </syntaxhighlight> Opis parametru: {{OpisParametrów | 1 = {{Code|liczba_obiekt_koniec_poprz}} {{Patrz|liczba_obiekt_koniec_poprz}} | _1 = Jest to poprzednia ostatnia pozycja artykułu z przestrzeni książkowej projektu polskiego {{NS|l=tak|w=tak|pk=d}}. }} ====== Znajdowanie i nadawanie wartości, pewnym zmiennym,jako wartości początkowe liczenia pozycji początkowej (startowej) ====== Na samym początku są wyznaczane lub inicjowane zmienne: ; Liczone zmienne{{dk}} {{OpisParametrów | 1 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _1 = Początek, pozycja znakowa w tekście artykułu spisu, nieokładkowego artykułu: <syntaxhighlight lang="lua"> local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; </syntaxhighlight> Jeśli nie ma zmiennej: {{Code|liczba_nie_okladka_artykul}} {{LinkPatrz|liczba_nie_okladka_artykul}}, to ustalamy ją ten parametr w ramce za pomocą: {{Code|liczba_obiekt_start}} {{LinkPatrz|liczba_obiekt_start}}. | 2 = {{Code|liczba_obiekt_koniec_nowe}} {{Patrz|liczba_obiekt_koniec_nowe}} | _2 = Koniec, pozycja znakowa w tekście artykułu spisu, nieokładkowego artykułu: <syntaxhighlight lang="lua"> local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; </syntaxhighlight> Jeśli nie ma zmiennej: {{Code|liczba_nie_okladka_artykul_koniec}} {{LinkPatrz|liczba_nie_okladka_artykul}}, to ustalamy ją ten parametr w ramce za pomocą: {{Code|liczba_obiekt_start}} {{LinkPatrz|liczba_obiekt_koniec}}. | 3 = {{Code|liczba_obiekt_start_nowe_temp}} {{Patrz|liczba_obiekt_start_nowe_temp}} | _3 = Jest to stara pozycja: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}. | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Zmienna pomocnicza: <syntaxhighlight lang="lua"> local czy_ten_rozdzial=true; </syntaxhighlight> | 5 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}}| _5 = Zmienna pomocnicza: <syntaxhighlight lang="lua"> czy_bez_naglowka=nil; </syntaxhighlight> }} ====== Znajdowanie nagłówków spisu treści dla danego artykułu podręcznika ====== Znajdujemy nagłówek spisu treści w spisie artykułu, typu: '''Spis treści''', czy: '''SPIS RZECZY''', i na podstawie tego pewne zmienne przy pomocy: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, wyszukujący różnego rodzaju nagłówki dodatnie, tzn.: {{LinkZobaczTeż|typy rozdziałów|StronicowyParser/Rozdziały}}, dzięki podfunkcji jej pomocniczej: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, która sprawdza, czy napis wprowadzenia tekstu jest nagłówkiem spisu treści różnie znormowanym i napisanym. Funkcja generuje zmienne: <syntaxhighlight lang="lua"> local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start; </syntaxhighlight> Wytłumaczenie zmiennych: {{OpisParametrów | 1 = {{Code|liczba_spis_tresci_start}} {{Patrz|liczba_spis_tresci_start}} | _1 = Pozycja początkowa napisu wprowadzenia tekstu rozdziału dodatniego. | 2 = {{Code|liczba_spis_tresci_koniec}} {{Patrz|liczba_spis_tresci_koniec}} | _2 = Jak powyżej, tylko, że końcowa. | 3 = {{Code|spis_naglowka_dodatni_start}} {{Patrz|spis_naglowka_dodatni_start}} | _3 = Nagłówek po policzeniu. | 4 = {{Code|spis_naglowka_dodatni_stare_start}} {{Patrz|spis_naglowka_dodatni_stare_start}} | _4 = To samo, co powyżej, ale przed wyznaczeniem. | 5 = {{Code|poziom_naglowka_start}} {{Patrz|poziom_naglowka_start}} | _5 = Poziom nagłówka dodatniego, może być o wartości {{Code|nil}}. }} ====== Wyszukiwanie rozdziałów niespisowych przed artykułem lub nagłówkiem spisu treści ====== Wyszukujemy rozdział następny spełniający pewne warunki nad napisem wprowadzenia tekstu nagłówka spisu treści, za pomocą: {{LinkŚródtytuł|p.SzukanieKolejnychSekcji|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. A jeżeli taki spis treści nie istnieje, to nad artykułem ostatnim wyszukanym w kolejnym obiegu pętli. Jej zwracane parametry to: <syntaxhighlight lang="lua"> local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Te parametry sa Opis parametrów, ten nagłówek nie musi być dodatni, może być ujemny, czy zerowy, tzn.: {{LinkZobaczTeż|typy rozdziałów|StronicowyParser/Rozdziały}} {{ZobaczTeż|p.SzukanieKolejnychSekcji}}: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} {{Patrz|liczba_start_naglowek}} | _1 = Znak początku wyszukania nagłówka nie spisu treści. | 2 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _2 = Znak końca wyszukania tego powyżej. | 3 = {{Code|poziom_naglowka}} {{Patrz|poziom_naglowka}} | _3 = Poziom tego nagłówka. }} ; Przed uruchomieniem tej funkcji wyszukiwania wielu nagłówków{{dk}} Wtedy są zbierane są dane w tabeli {{Patrz|tab_zmienne}}: {{Tbl|uchwyt=tab_zmienne|tekst= <syntaxhighlight lang="lua"> 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, }; </syntaxhighlight>}} A także są inicjowane zmienne: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Opis zmiennych inicjowanych: {{OpisParametrów | 1 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _1 = Mówi, czy zmienne w tabeli: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}, mają być zerowane do wartości nilowej, tzn. {{Code|nil}}, jeśli zajdzie taka potrzeba. | 2 = {{Code|liczba_obiekt_start_nowe}} | _2 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, tylko zaktualizowana o nagłówek istniejący spisu treści, a jeśli go nie ma, to według kodu przyjmuje wartość poprzednią. }} ; Po uruchomieniu tej funkcji znajdowania wielu nagłówków{{dk}} Na podstawie parametrów: {{LinkZobaczTeż|p.SzukanieKolejnychSekcji}} inicjowane są wtedy zmienne: {{Code|tab_zmienne}} {{LinkTbl|tab_zmienne}}, według kodu (podobnie jak w tym linku referencji odnośnika): <syntaxhighlight lang="lua"> 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; </syntaxhighlight> ====== Powtórzenie wyszukiwania w przypadku jego nieprawidłowego znalezienia tych rozdziałów ====== ; Nadawanie zmiennym wartości ze strony innych{{dk}} Gdy zmienna: {{Code|czy_ten_rozdzial}} {{LinkPatrz|czy_ten_rozdzial}}, przyjmuje wartość odpowiadającą fałszywej, wtedy wchodzimy do instrukcji warunkowej, a następnie dalej do innej przy sprawdzeniu, czy: {{Code|liczba_obiekt_start}} {{LinkPatrz|liczba_obiekt_start}}, jest nierówne tej: {{Code|liczba_obiekt_start_nowe_temp}} {{LinkPatrz|liczba_obiekt_start_nowe_temp}}, a jeśli tak to wchodzimy do instrukcji warunkowej, która to poprzednia, jak i ta, nie ma instrukcji: '''else'''. Po wejściu do instrukcji warunkowej inicjujemy pewne zmienne innymi: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} | _1 = Nadawanie wartości końca wyszukiwania od tyłu: <syntaxhighlight lang="lua"> liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; </syntaxhighlight> | 2 = {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}} | _2 = Nadawanie wartości początku wyszukiwania przy liczeniu funkcji zwracanej przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. <syntaxhighlight lang="lua"> liczba_obiekt_start_nowe=liczba_obiekt_start; </syntaxhighlight> | 3 = {{Code|czy_ten_rozdzial}} {{LinkPatrz|czy_ten_rozdzial}} | _3 = Nadawanie wartości, czy ma zerować zmienne w funkcji zwracanej przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. <syntaxhighlight lang="lua"> czy_ten_rozdzial=true; </syntaxhighlight> Tą zmienną inicjujemy podzmienną tabelowa: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}, przy pomocy: {{Code|czy_ten_rozdzial}} {{LinkPatrz|czy_ten_rozdzial}}, według: <syntaxhighlight lang="lua"> tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; </syntaxhighlight> }} ; Nadawanie zmiennych rozdziałowych ze strony jednej tylko funkcji wyszukujących wiele rozdziałów w jednej funkcji przy wykorzystywaniu innych{{dk}} Wywołujemy funkcję: {{LinkŚródtytuł|p.SzukanieKolejnychSekcji|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, wyszukujące obiekty od: {{Code|liczba_obiekt_start}} {{LinkPatrz|liczba_obiekt_start}}, do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, sprawdzając tekst pomiędzy od: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, do najbliższego wyszukanego rozdziału, czy jest prawidłowy, to jest sprawdzane dzięki: {{LinkŚródtytuł|p.AnalizowanieSekcjowe|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. Ta funkcja nadaje wartość zmiennym: {{LinkZobaczTeż|p.SzukanieKolejnychSekcji}}. ; Końcowe obliczenia inicjujące podobne zmienne lokalne z tabeli{{dk}} {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}{{dk}} Nadajemy wartości normalnym zmiennym o pewnej nazwie od wartości z tabeli o nazwach o takich samych kluczach, tzn. na podstawie: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Te zmienne mają jakieś sensowne wartości, jeśli pod warunkiem, nie zostały one wyzerowane lub nie mogły nastąpić takie operacje ze względu na wartość zmiennej: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}. ====== Wybieranie pomiędzy znalezionym rozdziałem, a spisem treści ====== Na podstawie wartości: {{Code|liczba_spis_tresci_start}} {{LinkPatrz|liczba_spis_tresci_start}}, oraz zmiennych poziomu: {{Code|poziom_naglowka_start}} {{LinkPatrz|poziom_naglowka_start}}, i {{Code|poziom_naglowka}} {{LinkPatrz|poziom_naglowka}}, jest wybierana w ten sposób zmienna: {{Code|liczba_spis_tresci_start}} {{LinkPatrz|liczba_spis_tresci_start}}, lub {{Code|liczba_start_naglowek}} {{LinkPatrz|liczba_start_naglowek}}. Najpierw pierwszeństwo ma ta pierwsza, a później ta druga, jeśli by wybrano tą nilową zmienną pierwszą. ====== Sprawdzanie aktualnej pozycji linkowej ====== ; Sprawdzanie warunku, spełnienie jego pozytywne, a jak jest w przypadku przeciwnym{{dk}} * W przypadku przeciwnym instrukcji tej warunkowej, którą jest: <syntaxhighlight lang="lua"> if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then </syntaxhighlight> Nadawane są wartości zmiennych: dla: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, ze strony od: {{Code|liczba_obiekt_koniec_nowe}} {{LinkPatrz|liczba_obiekt_koniec_nowe}}, a parametrowi: {{Code|liczba_nie_okladka_artykul_koniec}} {{LinkPatrz|liczba_nie_okladka_artykul_koniec}}, usuwana jest natomiast wszelaka wartość. A później jest nadawana wartość zmiennej: {{Code|liczba_obiekt_koniec_poprz}} {{LinkPatrz|liczba_obiekt_koniec_poprz}}, poprzez instrukcję: {{LinkZobaczTeż|liczba_obiekt_koniec_poprz}}. * W przypadku spełnienia tego warunku w poleceniu warunkowym, robimy na samym końcu obiegu pętli: {{LinkZobaczTeż|liczba_obiekt_koniec_poprz}},jeśli pętla wcześniej nie została przerwana przy pomocy prawdziwej zmiennej: {{Code|czy_break}} {{LinkPatrz|czy_break}}, a przedtem inne instrukcje, takie: ; Nadawanie wartości pewnym zmiennym{{dk}} Wtedy nadajemy zmiennej: {{Code|czy_bez_naglowka}} {{LinkPatrz|czy_bez_naglowka}}, wartość według: <syntaxhighlight lang="lua"> czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; </syntaxhighlight> Dalej wykonujemy instrukcje opisane w następnych podrozdziałach średnikowych, jako: ; Instrukcja{{dk}} {{nobold|wtedy}}, i w innym przypadku{{dk}} {{nobold|przeciwnie}}{{dk}} * Rozkaz w rozgałezieniu instrukcji warunkowej: {{Tt|wtedy}}: Sprawdzamy nad punktem: {{Code|liczba_start_naglowek}} {{LinkPatrz|liczba_start_naglowek}}, sprawdza, czy jakiś powyżej najbliższy obiekt jest: {{Code|LINKW}}, {{Code|LINKZ}} i {{Code|SZABLON}}, linki inteligentny, czy spisowy, ale szablonowy, wtedy działa funkcja: {{LinkŚródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, wtedy druga zwracana zmienna jest {{Code|true}}, przeciwnie ona zwraca {{Code|false}} z pierwszą początkową wartością wyszukiwania. Wtedy jest zwracana zmienna: {{OpisParametrów | 1 = {{Code|liczba_przed_rozdzialem}} {{Patrz|liczba_przed_rozdzialem}} | _1 = Wartość zwracana pozycji z ostatniej funkcji. | 2 = {{Code|czy_znajdz}} {{Patrz|czy_znajdz}} | _2 = Czy powyżej tego punktu znakowego są linki. }} Dalej od tego samego punktu, jest liczony rozdział dodatni: {{LinkZobaczTeż|typy rozdziałów|StronicowyParser/Rozdziały}}, z funkcji: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, która zwraca zmienną: {{Code|liczba_start_naglowek_przed}} {{Patrz| liczba_start_naglowek_przed}}. Dalej jest wyznaczany argument: {{Code|liczba_przed}} {{Patrz|liczba_przed}}, sposobem: <syntaxhighlight lang="lua"> local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_start_naglowek_przed) or liczba_przed_rozdzialem); </syntaxhighlight> Po tym jest wywoływana funkcja: {{LinkŚródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, która liczy,czy przed tym znajduje się rozdział zerowy, jak nie, to czy nie ma linku żadnego, a jak nie, to czy przed tym jest rozdział cudzysłowowy, wartością zwracaną jest: {{Code|liczba_start}} {{Patrz|liczba_start}} - pozycja początkowa pozycji prawdopodobnej spisu właściwego, i {{Code|czy_break}} {{Patrz|czy_break}} - czy pętla ma być przerwana. * Przeciwnie: {{Tt|przeciwnie}}: Wywołujemy funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, z pewną anonimową funkcją: <syntaxhighlight lang="lua"> function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) ... end; </syntaxhighlight> Ta funkcja jest wstawiana miejsce wywołania funkcji: {{Code|p.AnalizowanieSekcjowe}} {{LinkŚródtytuł|p.AnalizowanieSekcjowe|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, aby sprawdzić, czy pomiędzy z tymi elementami jest niepoprawny ciąg tekstowy, czyli taki jaki tam nie powinien się pojawić, a jeśli jednak się pojawił, to ta funkcja ma obsługę tego, i w zależności od tego może zwrócić odpowiednie elementy, w tym przypadku prawdziwości zwróconych wartości przez procedurę anonimową, wtedy ta funkcja zwraca wartość {{Code|false}}, przeciwnie ona zwróci poprawne dane, w postaci pewnych zmiennych. Która jest uruchamiana dla parametrów pomiędzy: {{Code|liczba_koniec_naglowek_nowe}} {{Patrz|liczba_koniec_naglowek_nowe}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, dla którego liczymy ciąg za pierwszym takim puntem i przed drugim również takim, z którego usuwamy zmienne szablonowe: {{Code|SZABLON}}, i sprawdzamy, czy otrzymamy ciąg z samych znaków odstępów, a jeżeli ona nie jest, to otrzymamy wartość z tej funkcji {{Code|true}}, przeciwnie: {{Code|nil}}. Z tej funkcji otrzymujemy parametry wytłumaczone w punkcie {{LinkZobaczTeż|p.SzukanieKolejnychSekcji}}: <syntaxhighlight lang="lua"> local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Jeżeli taka zmienna: {{Code|liczba_start_naglowek}} {{LinkPatrz|liczba_start_naglowek}}, rzeczywiście istnieje, wtedy zmiennej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, z tej istniejącej zmiennej. Dalej wywołujemy funkcję: {{LinkŚródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, szukając elementów, od tyłu, pomiędzy: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, a {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. Następnym punktem jest wyznaczenie zmiennej: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, w celu wyznaczenia prawdopodobnego początku liczenia właściwego spisu treści i zmiennej: {{Code|czy_break}} {{LinkPatrz|czy_break}}, czy przerwać pętle nadrzędną, tą funkcją wyznaczania tych parametrów jest: {{LinkŚródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}. ; Kiedy pętla nadrzędna jest przerywana{{dk}} Jeśli zmienna w tych dwóch rozgałęzieniach pętli: '''wtedy''', i '''else''', wartość: {{Code|czy_break}} {{LinkPatrz|czy_break}}, przyjmuje wartość fałszywą, wtedy następuje kolejny obieg pętli, przeciwnie jest przerywana, a {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, jest początkową pozycją właściwego spisu treści z zakodowanego artykułu, tym razem na pewno. ====== Zebrane dane o początku ustalenia właściwego spisu ====== Jeśli w pętli zakończyły się dane, lub nie otrzymano żadnej zmiennej: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, z konkretną wartością, to funkcja zwraca ciąg pusty, czyli właściwy spis treści jest równy ciągowi pustemu. A jeśli mamy jakieś treściwe dane tej zmiennej, to jest to początek znakowy w zmiennej: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, tego właściwego spisu w spisie. ==== Punkt końcowy ==== Punktem początkowym wyszukiwania od tyłu jest punkt równy końcowi tekstu artykułu spisu treści, tzn.: <syntaxhighlight lang="lua"> local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; </syntaxhighlight> Parametry początku wyszukiwania od tyłu: {{OpisParametrów | 1 = {{Code|liczba_obiekt_start_od_tylu}} {{Patrz|liczba_obiekt_start_od_tylu}} | _1 = Punkt początkowy wyszukiwania od tyłu w tekście, artykułu spisu, tzn.: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. }} Wyszukujemy tekst według pewnego wzoru, na podstawie funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Tym wzorem w tym wywołaniu funkcji jest: <syntaxhighlight lang="lua"> 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); </syntaxhighlight> Ogólnym wzorem, którym jest powyżej, to: {{Code|szablon_normy_kodowania_szablonu}} {{LinkPatrz|szablon_normy_kodowania_szablonu}}. Tą funkcję wywołuje się w {{ZobaczTeż|koniec wyszukiwania-pętla}} pętli, aż do zakończenia danych wyszukiwania lub przerwania, przy wykryciu pewnego punktu końca właściwego spisu treści. Zmienne te wyszukiwania są opisane, i znaczą praktycznie to samo, co w wyszukiwaniu punktu początkowego, tzn.: {{OpisParametrów | 1 = {{Code|liczba_start_szablon}} {{LinkPatrz|liczba_start_szablon}} | _1 = Punkt znalezienia początki ciągu według wzoru, ale od tyłu. | 2 = {{Code|liczba_koniec_szablon}} {{LinkPatrz|liczba_koniec_szablon}} | _2 = To samo, co powyżej, tylko że końca. | 3 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Linia cała wyszukiwana, bez znaków nowej linii, tzn. na jej początku i końcu. | 4 = {{Code|lista_szablon}} | _4 = Jak w: {{LinkPatrz|lista_szablon}}. | 5 = {{Code|przerwa_szablon}} | _5 = jak w: {{LinkPatrz|przerwa_szablon}}. | 6 = {{Code|obiekt_szablon}} | _6 = Jak w: {{LinkPatrz|obiekt_szablon}}. | 7 = {{Code|kod_szablon}} | _7 = Jak w: {{LinkPatrz|kod_szablon}}. | 8 = {{Code|dalszy_tekst}} | _8 = Jak w: {{LinkPatrz|dalszy_tekst}}. }} ===== Punkty wyszukiwania końca spisu właściwego ze spisu treści podręcznika ===== Dalszymi instrukcjami pętli {{LinkZobaczTeż|koniec wyszukiwania-pętla}}, jest sprawdzenie, czy zmienna: {{Code|liczba_start_szablon}} {{LinkPatrz|liczba_start_szablon}}, istnieje, a jeśli nie, to ta pętla jest przerywana jako zakończenie danych wyszukiwania z punktu do punktu znakowego od tyłu w pewnym większym określonym przedziale. Ustalamy następny punkt wyszukiwania od tyłu równy: {{Code|liczba_obiekt_start_od_tylu}} {{LinkPatrz|liczba_obiekt_start_od_tylu}}, od wartości zmiennej: {{Code|liczba_start_szablon}} {{LinkPatrz|liczba_start_szablon}}, dokładnie według kodu: <syntaxhighlight lang="lua"> liczba_obiekt_start_od_tylu=liczba_start_szablon; </syntaxhighlight> ; Znajdowanie punktów znakowych od tyłu, bez pętlowania dalej, o ile to jest możliwe, jeśli te linie zawierają obiekty typu{{dk}} {{nobold|{{Code|LINKW}}}}, {{nobold|{{Code|LINKZ}}}} lub {{nobold|{{Code|SZABLON}}}} (linki inteligentne, czy spisowe, ale szablonowe){{dk}} Funkcja możliwe może przerwać pętlowanie, o ile jest to możliwe, jeśli jest spełniony, któreś z warunków: * Na początku są znaki pozycji listy ze znaków: {{Code|<nowiki>[%*:#;<>]</nowiki>}}. * Jeśli ciąg znakowych tego z: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}} i {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}. * Jeśli powyższe nie jest spełnione to dla: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, równe ciągowi pustemu, wtedy: ** To ciągi: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}} i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, kolejno muszą się zaczynać i kończyć na znaki równa się, czyli: {{Code|{{=}}}}. Jeśli powyższe punkty nie są spełnione, to szukamy pierwszego linku w obiekcie o kodzie dla: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, według znalezionego, jeśli, wzoru: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Ta funkcja zwraca elementy (wartości - zmienne, zwracane): <syntaxhighlight lang="lua"> szablon,obiekt_szablon,kod_szablon,dalszy_tekst; </syntaxhighlight> Jeśli zmienna: {{Code|szablon}} {{LinkPatrz|szablon}}, istnieje, wtedy znaleziono taki punkt, w którym należy brać pod uwagę, czyli rozważyć. ; Znajdowanie końca spisu właściwego treści{{dk}} {{nobold|{{Code|liczba_start}}}}, który trzeba skorygować{{dk}} Z danych początkowych: {{Code|obiekt}} {{LinkPatrz|obiekt}} (jest to nic innego jak: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}), i {{Code|kod}} {{LinkPatrz|kod}} (uzyskanego z: {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}}), tylko jest to wersja liczbowa, a nie znakowa. Na podstawie tego uzyskujemy, wnętrze kodu z: {{Code|szablon}} {{LinkPatrz|szablon}}, lub z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, uzyskanego z kluczy: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}. Jeśli jest spełnione, tzn. zależność od punktu początkowego spisu właściwego w zależności od prawdopodobnego punktu końcowego, który mamy ustalić: <syntaxhighlight lang="lua"> if(liczba_start<=liczba_obiekt_start)then </syntaxhighlight> A jeśli jest spełniona ta instrukcja warunkowa, wtedy jest wywoływana funkcja: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}.ona sprawdza, czy parametry: {{Code|obiekt}} {{LinkPatrz|obiekt}}, i {{Code|kod}} {{LinkPatrz|kod}}, czy są kodami linków, a jeśli nie, to czy w: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są linki, a jeśli je tam znalazł, to funkcja zwraca {{ZobaczTeż|kiedy linki}} wartość prawdziwą. Kiedy jest prawdziwe {{LinkZobaczTeż|kiedy linki}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|p.PoliczKoniecZakodowanegoTekstuArtykularnego|StronicowyParser/AnalizaSpisuRzeczy/Tom VI}}, co ona wyszukuje niepustą linie nielistową pod spodem tej linii: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, pod pozycją wskazywaną w tej zmiennej, co po wywołaniu tej funkcji pętla jest przerywana. Funkcja liczy koniec spisu właściwego: {{Code|liczba_koniec}} {{Patrz|liczba_koniec}}, który trzeba skorygować. ===== Znajdowanie napisów wprowadzenia testu wraz z linkami artykułów ===== Szukamy, od tyłu od pozycji równą rozmiarowi zakodowanego i przetworzonego artykułu, rozdziały dodatniego: {{LinkZobaczTeż|typy rozdziałów|StronicowyParser/Rozdziały}}, przy pomocy funkcji: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, dla tekstu rozdziału zakodowanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. Zmienne są ustalane takie: <syntaxhighlight lang="lua"> local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial; </syntaxhighlight> O znaczeniach od czego są one: {{OpisParametrów | 1 = {{Code|liczba_rozdzial_start}} {{Patrz|liczba_rozdzial_start}} | _1 = Początek wyszukanej linii rozdziału dodatniego. | 2 = {{Code|liczba_rozdzial_koniec}} {{Patrz|liczba_rozdzial_koniec}} | _2 = Jak powyżej, ale to oto jest koniec. | 3 = {{Code|rozdzial_nazwa}} {{Patrz|rozdzial_nazwa}} | _3 = Tekst nagłówka zakodowanego przed rozwinięciem. | 4 = {{Code|rozdzial}} {{Patrz|rozdzial}} | _4 = Tekst nagłówka, tego powyżej, po rozwinięciu. }} Jeśli pozycja tego wyszukanego rozdziału jest mniejsza lub nie istnieje, to pętla jest przerywana, przeciwnie przy pomocy: {{LinkŚródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jest sprawdzane, czy w nim są jakieś linki, co najmniej jeden. A jeśli tak, to jest liczony nowy koniec spisu treści właściwego ze spisu, czyli: {{Code|liczba_koniec}} {{LinkPatrz|liczba_koniec}}, od zmiennej: {{Code|liczba_rozdzial_koniec}} {{LinkPatrz|liczba_rozdzial_koniec}}, którym jest końcem linii wyszukanego tego rozdziału. ==== Wydzielanie spisu właściwego na podstawie punktu startowego i końcowego właściwego spisu treści z całego artykułu danego spisu książki ==== Gdy nie znaleziono końca właściwego spisu treści, lub punkt początka znakowego jest większy niż końcowy, to funkcja zwraca spis właściwy w postaci pustego ciągu znakowego. ===== Znajdowanie szablonu licencji i pierwsza korekcja końca spisu ===== Szukamy punkt końca, gdzie jest umieszczony szablon licencji: {{Code|{{s|Licencja}}}}, jeśli on istnieje, to szukamy przy pomocy: {{LinkŚródtytuł|p.KoniecStronyLicencja|StronicowyParser/AnalizaSpisuRzeczy/Tom VI}}, i jest większy niż koniec spisu właściwego: {{Code|liczba_koniec}} {{LinkPatrz|liczba_koniec}}, to ustalamy jego koniec nowy, zmieniając jego wartość na: {{Code|licencja_koniec}} {{Patrz|licencja_koniec}}. ===== Wydzielanie właściwego spisu treści z artykułu zawartości spisu ===== Wydzielamy spis właściwy treści ze spisu z tekstu artykułu zakodowanego tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, od pozycji: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, do {{Code|liczba_koniec}} {{LinkPatrz|liczba_koniec}}, przy pomocy funkcji: {{LzLua|mw.ustring.sub}}, inicjując w ten sposób zmienną: {{Code|tekst}} {{Patrz|tekst}}. Robimy to kodem: <syntaxhighlight lang="lua"> local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); </syntaxhighlight> ====== Redagowania testu zawartości spisu o nazwie: {{Tt|Bibliografia}} i {{Tt|Literatura}} - zmienianie i usuwanie szablonów i pewnych linków ====== Przy pomocy: {{linkŚródtytuł|p.KorygowanieTekstuSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom VI}}, w dwóch okrążeniach modyfikujemy, czyli korygujmy tekst właściwego spisu treści: {{Code|tekst}} {{LinkPatrz|tekst}}. Do definiowania ile jest tych tak naprawdę okrążeń, to zależy od zdefiniowanej tabelki w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, którą definiujemy {{LinkTbl|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|StronicowyParser/AnalizaSpisuRzeczy/Tom VI}}. ==== Co uzyskaliśmy w wyniku działania funkcji wydzielania konkretnego spisu treści z całego artykułu spisu ==== W wyniku skorygowanego spisu właściwego tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, otrzymujemy fragment jego, z którego w łatwy sposób bez pomylenia możemy wydzielić nagłówki z ich teksttami rozdziałów, a w ich tekstach i napisach wprowadzenia tekstów rozróżniamy w odpowiedni sposób zakodowane linki pisane jako: {{Code|LINKW}}, {{Code|LINKZ}} i {{Code|SZABLON}} (linki inteligentne, także również spisowe, ale szablonowe). {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> smxzqul4f3g7rirt1qh868qia6dz4r3 Wikibooks:Moduły/StronicowyParser/Potrzebne/Tom I 4 64467 560411 560099 2026-11-01T11:14:28Z Persino 2851 /* {{Śródtytuł|p.SpisRzeczySzablon}}{{Code|p.SpisRzeczySzablon}} */ 560411 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.SpisRzeczySzablon}}{{Code|p.SpisRzeczySzablon}} == Funkcja zmieniająca numer parametru, któremu jest przyporządkowana jego nazwa parametru, szablonu na jego nazwę, a później jest to zamieniane na jego wartość względem parametrów szablonu. Funkcja posiada pamięć, aby nie znajdować tablicy, któremu jest przyporządkowana nazwa szablonu. Funkcja posiada wybór pomiędzy dwoma tablicami, tzn. pomiędzy {{Code|{{sr|#p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu|tekst= <syntaxhighlight lang="lua"> p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu={ ["SpisTreści"]={{"artykuł",1,},{"książka",2,},{"nazwa",3,},{"dodatek",4,},{"poziom",},}, }; </syntaxhighlight>}} A tablicą drugą {{Code|{{sr|#p.szablony_linkowe_spisu_rzeczy|p=StronicowyParser/obiekty}}}}: {{Tbl|uchwyt=p.szablony_linkowe_spisu_rzeczy|tekst= <syntaxhighlight lang="lua"> p.szablony_linkowe_spisu_rzeczy={ ["Sekcja referencyjna"]={{"strona","s",1,},{"nazwa","n",2,},{"podstrona","p",3},{"ustęp","u",4},{"od małej","m"},{"od dużej","d",},{"nazwa przestrzeni nazw",},{"nazwa jednostki",},}, }; </syntaxhighlight>}} Skrótowa definicja funkcji: <syntaxhighlight lang="lua"> function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu, któremu jest przyporządkowana pewna tablica. | 2 = {{Code|numer}} {{Patrz|numer}} | _2 = Numer parametru. | 3 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _3 = Tabela parametrów szablonu. | 4 = {{Code|tabela_nazw_spisu_rzeczy_szablon}} {{Patrz|tabela_nazw_spisu_rzeczy_szablon}} | _4 = Tabela historii, dzięki któremu jest pamiętana tablica przyporządkowana nazwie szablonu {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}. Ta tablica w historii, ma wtedy zapamiętany klucz: {{Code|numer_parametru}} {{Patrz|numer_parametru}}. | 5 = {{Code|kod_num}} | _5 = Wartość odpowiadająca logicznej, dzięki któremu jest wybierana jakaś tablica. Wartości odpowiadającej fałszywej, co odpowiada: {{LinkTbl|p.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu}}, a innej: {{LinkTbl|p.szablony_linkowe_spisu_rzeczy}}. }} == {{Śródtytuł|p.LiczonyHNumer}}{{Code|p.LiczonyHNumer}} == Funkcja do liczenia numeracji rozdziałów i artykułów, którym jest przyporządkowany pewien poziom. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LiczonyHNumer() ... return function(h_numer,h_numer_nowe) ... end; end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = Brak parametrów | komórka1 = tak }} Opis parametrów funkcji zwracanej: {{OpisParametrów | 1 = {{Code|h_numer}} {{Patrz|h_numer}} | _1 = Poziom rozdziału lub artykułu (wymagany). | 2 = {{Code|h_numer_nowe}} {{Patrz|h_numer_nowe}} | _2 = Numer poziomu przyporządkowany danemu poziomowi (opcjonalny) }} Wywołanie funkcji mniej więcej polega na tym: <syntaxhighlight lang="lua"> local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer(); ... ---- Funkcja wywołana wiele razy, dla różnych poziomów rozdziałów i artykułów, a tutaj jest pojedynczy przykład: local numer_poziomu=HNumer(2); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6rl67itgxeto5d193zaj8qk5umdss5h Wikibooks:Moduły/StronicowyParser/Potrzebne/Tom VIII 4 64474 560353 560348 2026-10-31T15:17:47Z Persino 2851 /* {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} */ 560353 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.RozwijanieZakodowanejNazwySzablonu}}{{Code|p.RozwijanieZakodowanejNazwySzablonu}} == {{Śródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|bez preprocess=tak|klucz=tak|klucz2=tak|tekst={{#if:{{{klucz|}}}| Funkcja do dekodowania i rozwijania nazwy szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, przy pomocy uchwytu bazy: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu}}, lub tabeli bazy zakodowania tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, a jeżeli ona posiada w sobie wywołania: {{lk|Szablony stronicowe|szablonów stronicowych}}, to one są zamieniane kody typu: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, przy wyłączonym kluczu: {{Code|czy_z_kluczem}} {{LinkPatrz|czy_z_kluczem}}, aby {{ld|StronicowyParser|Stronicowy Parser}} nie wpadł w nieskończoną pętle, która nigdy się nie kończy, aby zapobiec temu, to tak trzeba robić. Jeżeli w nazwie tego nie ma żadnego kodu, to z nim nic nie jest robione, a jak nie ma żadnego tworu szablonowego, to ona nie jest rozwijana względem funkcji: {{LzLua|frame:preprocess}}. Funkcja też jest używana w wersji {{#if:{{{klucz2|}}}|po wydzieleniu|przed wydzieleniem}} opcji modyfikatorowych, podczas ustalania nazwy szablonu, czy parsera, to robi się zwykle {{#if:{{{klucz2|}}}|po|przed}}: {{Code|{{sr|#p.WydzielanieOpcjiModyfikatorowych|p=Szablonowe}}}}, która wydziela nazwę, modyfikatory w postaci łańcucha znaków i tabele użytych modyfikatorów. | tak}} }} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Opis parametrów funkcji {{ZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}: {{OpisParametrów | 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do odkodowania. | 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Uchwyt bazy zakodowanego tekstu, używany zamiast: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w postaci szablonowej, w takiej postaci jaką się go wywołuje w szablnach. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy zakodowanego tekstu wikikodu. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela rozkładów niektórych, ale niekoniecznie, elementów na czynniki pierwsze. }} ; Kroki postępowania funkcji{{dk}} Funkcja używa funkcji: {{Code|{{sr|#p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych|p=Szablonowe}}}} lub {{Code|{{sr|#p.CzyModyfikatoryCharakterystyczneSzablonowe|p=Szablonowe}}}}, wtedy jeśli któraś z nich coś wykryła, to wtedy funkcja zwraca wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Dalej, jeśli funkcja ominęła powyższy krok instrukcji, jest wykonywana: {{LinkŚródtytuł|p.DekodowanieNazwySzablonu}}, a jeśli ona nic nie zrobiła, ale nazwa szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, zawiera jakiś kod, wtedy druki parametr wskazuje na niepowodzenie, w takim wypadku wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Jeśli wszystko poszło dobrze, to wtedy funkcja zwraca zmodyfikowany lub nienaruszony, jeśli w nim nie ma żadnych kodów, wynik z drugim parametrem prawdziwym: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> Drugi parametr oznacza tutaj, że jakiś wynik mamy. == {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} == Funkcja do dekodowania tekstu i rozwijania go funkcją: {{LzLua|frame:preprocess}}. Funkcja {{lk|szablony stronicowe}} zamienia na kod symboliczny, a inne już są w postaci normalnych wywołań, całość jest rozwijana tą funkcją. Funkcja używa podwójnego uruchamiania swoich funkcji, najpierw zbiera parametry, dzięki którym ma być uruchamiana, a później ona tak zwraca inną funkcją, którą dekodujemy właściwie tekst. W tym drugim działa: {{LinkŚródtytuł|p.DekodowanieTekstuNazwLinku|StronicowyParser/Pomocne}}, której dwa zwrócone wynik za jednym razem są zwracane przez tą funkcję zwracaną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieTekstu(nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony) ... end; end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}. | 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} | _5 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Potrzebne/Tom III}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Potrzebne/Tom III}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Potrzebne/Tom III}}. | 6 = {{Code|nazwa_artykulu}} | _6 = Jak w: {{LinkPatrz|nazwa_artykulu|StronicowyParser/Potrzebne/Tom III}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Pomocne}}. | 2 = {{Code|tryb}} | _2 = Jak w: {{LinkPatrz|tryb|StronicowyParser/Pomocne}}. | 3 = {{Code|czy_nie_odstepy}} | _3 = Jak w: {{LinkPatrz|czy_nie_odstepy|StronicowyParser/Pomocne}}. | 4 = {{Code|drugi_wynik}} | _4 = Jak w: {{LinkPatrz|drugi_wynik|StronicowyParser/Pomocne}}. | 5 = {{Code|czy_drugi_wynik_przetworzony}} | _5 = Jak w: {{LinkPatrz|czy_drugi_wynik_przetworzony|StronicowyParser/Pomocne}}. }} == {{Śródtytuł|p.ARCHIWLubSTARE}}{{Code|p.ARCHIWLubSTARE}} == Funkcja zamieniająca kod niedozwolony przez dany szablon na kod typu: {{Code|obiekt}} {{LinkPatrz|obiekt}} lub {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, o pewnym numerze ustalanym przez {{Code|kod}} {{LinkPatrz|kod}} lub funkcję: {{Code|{{sr|#p.NumerSzablonuObiektu|p=Szablonowe}}}}, o właściwym kodzie pisanym przez: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Funkcja zwraca ten kod z drugim parametrem, który jest numer tego kodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Kod stary szablonowy, jeszcze przed zamianą. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Alternatywny typ obiektu po zamianie niż {{Code|ARCHIW}} {{Patrz|ARCHIW}}. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Alternatywny numer obiektu o typie: {{LinkPatrz|obiekt}} lub {{LinkPatrz|ARCHIW}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy kodów tekstu zakodowanego. }} == {{Śródtytuł|p.DekodowanieNazwySzablonu}}{{Code|p.DekodowanieNazwySzablonu}} == {{PobierzŚródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|klucz=tak|klucz2=}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = Funkcja przyjmuje te same parametry, co: {{LinkZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}.| komórka1 = tak | 2 = Parametry dadatkowe: | nagłówek2 = tak | 3 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _3 = Wartość fałszywa, wtedy funkcja nie uwzględnia modyfikatorów przy dekodowaniu, w takiej ssytuacj, jak ona to wykryje, to natychmiast zwraca wynik. | 4 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _4 = Wartość fałszywa, wtedy zmienne kluczowe dla szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, są kodowane w specjalnych kodach: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}. }} Gdy funkcja nie wykryła żadnego kody w: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, to jest zakańczana z wynikiem: <syntaxhighlight lang="lua"> return nil,true; </syntaxhighlight> Gdy nie uwzględnia modyfikatorów, ale w tej nazwie są one jednak jakieś, rozważając ogólnie, to funkcja zakańcza się: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> A gdy jednak tą nazwę odkodowano, i ewentualnie rozwinięto specjalną funkcją: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, to wtedy mamy: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> k8w2d8dp9p81p52ga43puvd7aec3lzv 560354 560353 2026-10-31T15:19:44Z Persino 2851 /* {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} */ 560354 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.RozwijanieZakodowanejNazwySzablonu}}{{Code|p.RozwijanieZakodowanejNazwySzablonu}} == {{Śródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|bez preprocess=tak|klucz=tak|klucz2=tak|tekst={{#if:{{{klucz|}}}| Funkcja do dekodowania i rozwijania nazwy szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, przy pomocy uchwytu bazy: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu}}, lub tabeli bazy zakodowania tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, a jeżeli ona posiada w sobie wywołania: {{lk|Szablony stronicowe|szablonów stronicowych}}, to one są zamieniane kody typu: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, przy wyłączonym kluczu: {{Code|czy_z_kluczem}} {{LinkPatrz|czy_z_kluczem}}, aby {{ld|StronicowyParser|Stronicowy Parser}} nie wpadł w nieskończoną pętle, która nigdy się nie kończy, aby zapobiec temu, to tak trzeba robić. Jeżeli w nazwie tego nie ma żadnego kodu, to z nim nic nie jest robione, a jak nie ma żadnego tworu szablonowego, to ona nie jest rozwijana względem funkcji: {{LzLua|frame:preprocess}}. Funkcja też jest używana w wersji {{#if:{{{klucz2|}}}|po wydzieleniu|przed wydzieleniem}} opcji modyfikatorowych, podczas ustalania nazwy szablonu, czy parsera, to robi się zwykle {{#if:{{{klucz2|}}}|po|przed}}: {{Code|{{sr|#p.WydzielanieOpcjiModyfikatorowych|p=Szablonowe}}}}, która wydziela nazwę, modyfikatory w postaci łańcucha znaków i tabele użytych modyfikatorów. | tak}} }} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Opis parametrów funkcji {{ZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}: {{OpisParametrów | 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do odkodowania. | 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Uchwyt bazy zakodowanego tekstu, używany zamiast: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w postaci szablonowej, w takiej postaci jaką się go wywołuje w szablnach. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy zakodowanego tekstu wikikodu. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela rozkładów niektórych, ale niekoniecznie, elementów na czynniki pierwsze. }} ; Kroki postępowania funkcji{{dk}} Funkcja używa funkcji: {{Code|{{sr|#p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych|p=Szablonowe}}}} lub {{Code|{{sr|#p.CzyModyfikatoryCharakterystyczneSzablonowe|p=Szablonowe}}}}, wtedy jeśli któraś z nich coś wykryła, to wtedy funkcja zwraca wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Dalej, jeśli funkcja ominęła powyższy krok instrukcji, jest wykonywana: {{LinkŚródtytuł|p.DekodowanieNazwySzablonu}}, a jeśli ona nic nie zrobiła, ale nazwa szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, zawiera jakiś kod, wtedy druki parametr wskazuje na niepowodzenie, w takim wypadku wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Jeśli wszystko poszło dobrze, to wtedy funkcja zwraca zmodyfikowany lub nienaruszony, jeśli w nim nie ma żadnych kodów, wynik z drugim parametrem prawdziwym: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> Drugi parametr oznacza tutaj, że jakiś wynik mamy. == {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} == Funkcja do dekodowania tekstu i rozwijania go funkcją: {{LzLua|frame:preprocess}}. Funkcja {{lk|szablony stronicowe}} zamienia na kod symboliczny, a inne już są w postaci normalnych wywołań, całość jest rozwijana tą funkcją. Funkcja używa podwójnego uruchamiania swoich funkcji, najpierw zbiera parametry, dzięki którym ma być uruchamiana, a później ona tak zwraca inną funkcją, którą dekodujemy właściwie tekst. W tym drugim działa: {{LinkŚródtytuł|p.DekodowanieTekstuNazwLinku|StronicowyParser/Pomocne}}, której dwa zwrócone wynik za jednym razem są zwracane przez tą funkcję zwracaną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieTekstu(nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony) ... end; end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}. | 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} | _5 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Potrzebne/Tom III}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Potrzebne/Tom III}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Potrzebne/Tom III}}. | 6 = {{Code|nazwa_artykulu}} | _6 = Jak w: {{LinkPatrz|nazwa_artykulu|StronicowyParser/Potrzebne/Tom III}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Pomocne}}. | 2 = {{Code|tryb}} | _2 = Jak w: {{LinkPatrz|tryb|StronicowyParser/Pomocne}}. | 3 = {{Code|czy_nie_odstepy}} | _3 = Jak w: {{LinkPatrz|czy_nie_odstepy|StronicowyParser/Pomocne}}. | 4 = {{Code|drugi_wynik}} | _4 = Jak w: {{LinkPatrz|drugi_wynik|StronicowyParser/Pomocne}}. | 5 = {{Code|czy_drugi_wynik_przetworzony}} | _5 = Jak w: {{LinkPatrz|czy_drugi_wynik_przetworzony|StronicowyParser/Pomocne}}. }} Funkcja zwraca te same parametry, co funkcja: {{LinkŚródtytuł|p.DekodowanieTekstuNazwLinku|StronicowyParser/Pomocne}}. == {{Śródtytuł|p.ARCHIWLubSTARE}}{{Code|p.ARCHIWLubSTARE}} == Funkcja zamieniająca kod niedozwolony przez dany szablon na kod typu: {{Code|obiekt}} {{LinkPatrz|obiekt}} lub {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, o pewnym numerze ustalanym przez {{Code|kod}} {{LinkPatrz|kod}} lub funkcję: {{Code|{{sr|#p.NumerSzablonuObiektu|p=Szablonowe}}}}, o właściwym kodzie pisanym przez: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Funkcja zwraca ten kod z drugim parametrem, który jest numer tego kodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Kod stary szablonowy, jeszcze przed zamianą. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Alternatywny typ obiektu po zamianie niż {{Code|ARCHIW}} {{Patrz|ARCHIW}}. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Alternatywny numer obiektu o typie: {{LinkPatrz|obiekt}} lub {{LinkPatrz|ARCHIW}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy kodów tekstu zakodowanego. }} == {{Śródtytuł|p.DekodowanieNazwySzablonu}}{{Code|p.DekodowanieNazwySzablonu}} == {{PobierzŚródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|klucz=tak|klucz2=}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = Funkcja przyjmuje te same parametry, co: {{LinkZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}.| komórka1 = tak | 2 = Parametry dadatkowe: | nagłówek2 = tak | 3 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _3 = Wartość fałszywa, wtedy funkcja nie uwzględnia modyfikatorów przy dekodowaniu, w takiej ssytuacj, jak ona to wykryje, to natychmiast zwraca wynik. | 4 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _4 = Wartość fałszywa, wtedy zmienne kluczowe dla szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, są kodowane w specjalnych kodach: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}. }} Gdy funkcja nie wykryła żadnego kody w: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, to jest zakańczana z wynikiem: <syntaxhighlight lang="lua"> return nil,true; </syntaxhighlight> Gdy nie uwzględnia modyfikatorów, ale w tej nazwie są one jednak jakieś, rozważając ogólnie, to funkcja zakańcza się: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> A gdy jednak tą nazwę odkodowano, i ewentualnie rozwinięto specjalną funkcją: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, to wtedy mamy: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cli0y5ah2fa43qxux5xlkro8mxcriaj 560355 560354 2026-10-31T15:23:08Z Persino 2851 /* {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} */ 560355 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.RozwijanieZakodowanejNazwySzablonu}}{{Code|p.RozwijanieZakodowanejNazwySzablonu}} == {{Śródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|bez preprocess=tak|klucz=tak|klucz2=tak|tekst={{#if:{{{klucz|}}}| Funkcja do dekodowania i rozwijania nazwy szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, przy pomocy uchwytu bazy: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu}}, lub tabeli bazy zakodowania tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, a jeżeli ona posiada w sobie wywołania: {{lk|Szablony stronicowe|szablonów stronicowych}}, to one są zamieniane kody typu: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, przy wyłączonym kluczu: {{Code|czy_z_kluczem}} {{LinkPatrz|czy_z_kluczem}}, aby {{ld|StronicowyParser|Stronicowy Parser}} nie wpadł w nieskończoną pętle, która nigdy się nie kończy, aby zapobiec temu, to tak trzeba robić. Jeżeli w nazwie tego nie ma żadnego kodu, to z nim nic nie jest robione, a jak nie ma żadnego tworu szablonowego, to ona nie jest rozwijana względem funkcji: {{LzLua|frame:preprocess}}. Funkcja też jest używana w wersji {{#if:{{{klucz2|}}}|po wydzieleniu|przed wydzieleniem}} opcji modyfikatorowych, podczas ustalania nazwy szablonu, czy parsera, to robi się zwykle {{#if:{{{klucz2|}}}|po|przed}}: {{Code|{{sr|#p.WydzielanieOpcjiModyfikatorowych|p=Szablonowe}}}}, która wydziela nazwę, modyfikatory w postaci łańcucha znaków i tabele użytych modyfikatorów. | tak}} }} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Opis parametrów funkcji {{ZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}: {{OpisParametrów | 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do odkodowania. | 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Uchwyt bazy zakodowanego tekstu, używany zamiast: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w postaci szablonowej, w takiej postaci jaką się go wywołuje w szablnach. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy zakodowanego tekstu wikikodu. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela rozkładów niektórych, ale niekoniecznie, elementów na czynniki pierwsze. }} ; Kroki postępowania funkcji{{dk}} Funkcja używa funkcji: {{Code|{{sr|#p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych|p=Szablonowe}}}} lub {{Code|{{sr|#p.CzyModyfikatoryCharakterystyczneSzablonowe|p=Szablonowe}}}}, wtedy jeśli któraś z nich coś wykryła, to wtedy funkcja zwraca wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Dalej, jeśli funkcja ominęła powyższy krok instrukcji, jest wykonywana: {{LinkŚródtytuł|p.DekodowanieNazwySzablonu}}, a jeśli ona nic nie zrobiła, ale nazwa szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, zawiera jakiś kod, wtedy druki parametr wskazuje na niepowodzenie, w takim wypadku wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Jeśli wszystko poszło dobrze, to wtedy funkcja zwraca zmodyfikowany lub nienaruszony, jeśli w nim nie ma żadnych kodów, wynik z drugim parametrem prawdziwym: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> Drugi parametr oznacza tutaj, że jakiś wynik mamy. == {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} == Funkcja do dekodowania tekstu i rozwijania go funkcją: {{LzLua|frame:preprocess}}. Funkcja {{lk|szablony stronicowe}} zamienia na kod symboliczny, a inne już są w postaci normalnych wywołań, całość jest rozwijana tą funkcją. Funkcja używa podwójnego uruchamiania swoich funkcji, najpierw zbiera parametry, dzięki którym ma być uruchamiana, a później ona tak zwraca inną funkcją, którą dekodujemy właściwie tekst. W tym drugim działa: {{LinkŚródtytuł|p.DekodowanieTekstuNazwLinku|StronicowyParser/Pomocne}}, której dwa zwrócone wynik za jednym razem są zwracane przez tą funkcję zwracaną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieTekstu(nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony) ... end; end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}. | 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} | _5 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Potrzebne/Tom III}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Potrzebne/Tom III}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Potrzebne/Tom III}}. | 6 = {{Code|nazwa_artykulu}} | _6 = Jak w: {{LinkPatrz|nazwa_artykulu|StronicowyParser/Potrzebne/Tom III}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Pomocne}}. | 2 = {{Code|tryb}} | _2 = Jak w: {{LinkPatrz|tryb|StronicowyParser/Pomocne}}. | 3 = {{Code|czy_nie_odstepy}} | _3 = Jak w: {{LinkPatrz|czy_nie_odstepy|StronicowyParser/Pomocne}}. | 4 = {{Code|drugi_wynik}} | _4 = Jak w: {{LinkPatrz|drugi_wynik|StronicowyParser/Pomocne}}. | 5 = {{Code|czy_drugi_wynik_przetworzony}} | _5 = Jak w: {{LinkPatrz|czy_drugi_wynik_przetworzony|StronicowyParser/Pomocne}}. }} Funkcja zwraca te same parametry, co funkcja: {{LinkŚródtytuł|p.DekodowanieTekstuNazwLinku|StronicowyParser/Pomocne}}. Przykład działania funkcji: <syntaxhighlight lang="lua"> local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); ... strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil); </syntaxhighlight> == {{Śródtytuł|p.ARCHIWLubSTARE}}{{Code|p.ARCHIWLubSTARE}} == Funkcja zamieniająca kod niedozwolony przez dany szablon na kod typu: {{Code|obiekt}} {{LinkPatrz|obiekt}} lub {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, o pewnym numerze ustalanym przez {{Code|kod}} {{LinkPatrz|kod}} lub funkcję: {{Code|{{sr|#p.NumerSzablonuObiektu|p=Szablonowe}}}}, o właściwym kodzie pisanym przez: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Funkcja zwraca ten kod z drugim parametrem, który jest numer tego kodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Kod stary szablonowy, jeszcze przed zamianą. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Alternatywny typ obiektu po zamianie niż {{Code|ARCHIW}} {{Patrz|ARCHIW}}. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Alternatywny numer obiektu o typie: {{LinkPatrz|obiekt}} lub {{LinkPatrz|ARCHIW}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy kodów tekstu zakodowanego. }} == {{Śródtytuł|p.DekodowanieNazwySzablonu}}{{Code|p.DekodowanieNazwySzablonu}} == {{PobierzŚródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|klucz=tak|klucz2=}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = Funkcja przyjmuje te same parametry, co: {{LinkZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}.| komórka1 = tak | 2 = Parametry dadatkowe: | nagłówek2 = tak | 3 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _3 = Wartość fałszywa, wtedy funkcja nie uwzględnia modyfikatorów przy dekodowaniu, w takiej ssytuacj, jak ona to wykryje, to natychmiast zwraca wynik. | 4 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _4 = Wartość fałszywa, wtedy zmienne kluczowe dla szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, są kodowane w specjalnych kodach: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}. }} Gdy funkcja nie wykryła żadnego kody w: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, to jest zakańczana z wynikiem: <syntaxhighlight lang="lua"> return nil,true; </syntaxhighlight> Gdy nie uwzględnia modyfikatorów, ale w tej nazwie są one jednak jakieś, rozważając ogólnie, to funkcja zakańcza się: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> A gdy jednak tą nazwę odkodowano, i ewentualnie rozwinięto specjalną funkcją: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, to wtedy mamy: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> byvgj7vd7c23whfpety9gqrfznil2wn 560356 560355 2026-10-31T23:50:24Z Persino 2851 /* {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} */ 560356 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.RozwijanieZakodowanejNazwySzablonu}}{{Code|p.RozwijanieZakodowanejNazwySzablonu}} == {{Śródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|bez preprocess=tak|klucz=tak|klucz2=tak|tekst={{#if:{{{klucz|}}}| Funkcja do dekodowania i rozwijania nazwy szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, przy pomocy uchwytu bazy: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu}}, lub tabeli bazy zakodowania tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, a jeżeli ona posiada w sobie wywołania: {{lk|Szablony stronicowe|szablonów stronicowych}}, to one są zamieniane kody typu: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, przy wyłączonym kluczu: {{Code|czy_z_kluczem}} {{LinkPatrz|czy_z_kluczem}}, aby {{ld|StronicowyParser|Stronicowy Parser}} nie wpadł w nieskończoną pętle, która nigdy się nie kończy, aby zapobiec temu, to tak trzeba robić. Jeżeli w nazwie tego nie ma żadnego kodu, to z nim nic nie jest robione, a jak nie ma żadnego tworu szablonowego, to ona nie jest rozwijana względem funkcji: {{LzLua|frame:preprocess}}. Funkcja też jest używana w wersji {{#if:{{{klucz2|}}}|po wydzieleniu|przed wydzieleniem}} opcji modyfikatorowych, podczas ustalania nazwy szablonu, czy parsera, to robi się zwykle {{#if:{{{klucz2|}}}|po|przed}}: {{Code|{{sr|#p.WydzielanieOpcjiModyfikatorowych|p=Szablonowe}}}}, która wydziela nazwę, modyfikatory w postaci łańcucha znaków i tabele użytych modyfikatorów. | tak}} }} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Opis parametrów funkcji {{ZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}: {{OpisParametrów | 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do odkodowania. | 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Uchwyt bazy zakodowanego tekstu, używany zamiast: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w postaci szablonowej, w takiej postaci jaką się go wywołuje w szablnach. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy zakodowanego tekstu wikikodu. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela rozkładów niektórych, ale niekoniecznie, elementów na czynniki pierwsze. }} ; Kroki postępowania funkcji{{dk}} Funkcja używa funkcji: {{Code|{{sr|#p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych|p=Szablonowe}}}} lub {{Code|{{sr|#p.CzyModyfikatoryCharakterystyczneSzablonowe|p=Szablonowe}}}}, wtedy jeśli któraś z nich coś wykryła, to wtedy funkcja zwraca wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Dalej, jeśli funkcja ominęła powyższy krok instrukcji, jest wykonywana: {{LinkŚródtytuł|p.DekodowanieNazwySzablonu}}, a jeśli ona nic nie zrobiła, ale nazwa szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, zawiera jakiś kod, wtedy druki parametr wskazuje na niepowodzenie, w takim wypadku wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Jeśli wszystko poszło dobrze, to wtedy funkcja zwraca zmodyfikowany lub nienaruszony, jeśli w nim nie ma żadnych kodów, wynik z drugim parametrem prawdziwym: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> Drugi parametr oznacza tutaj, że jakiś wynik mamy. == {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} == Funkcja do dekodowania tekstu i rozwijania go funkcją: {{LzLua|frame:preprocess}}. Funkcja {{lk|szablony stronicowe}} zamienia na kod symboliczny, a inne już są w postaci normalnych wywołań, całość jest rozwijana tą funkcją. Funkcja używa podwójnego uruchamiania swoich funkcji, najpierw zbiera parametry, dzięki którym ma być uruchamiana, a później ona tak zwraca inną funkcją, którą dekodujemy właściwie tekst. W tym drugim działa: {{LinkŚródtytuł|p.DekodowanieTekstuNazwLinku|StronicowyParser/Pomocne}}, której dwa zwrócone wynik za jednym razem są zwracane przez tą funkcję zwracaną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieTekstu(nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony) ... end; end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}. | 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} | _5 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Potrzebne/Tom III}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Potrzebne/Tom III}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Potrzebne/Tom III}}. | 6 = {{Code|nazwa_artykulu}} | _6 = Jak w: {{LinkPatrz|nazwa_artykulu|StronicowyParser/Potrzebne/Tom III}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Pomocne}}. | 2 = {{Code|tryb}} | _2 = Jak w: {{LinkPatrz|tryb|StronicowyParser/Pomocne}}. | 3 = {{Code|czy_nie_odstepy}} | _3 = Jak w: {{LinkPatrz|czy_nie_odstepy|StronicowyParser/Pomocne}}. | 4 = {{Code|drugi_wynik}} | _4 = Jak w: {{LinkPatrz|drugi_wynik|StronicowyParser/Pomocne}}. | 5 = {{Code|czy_drugi_wynik_przetworzony}} | _5 = Jak w: {{LinkPatrz|czy_drugi_wynik_przetworzony|StronicowyParser/Pomocne}}. }} Funkcja zwraca te same parametry, co funkcja, o którą jest zbudowane ciało, dzięki tego jest powtórzenie działania tego jak funkcja zwracana. Przykład działania funkcji: <syntaxhighlight lang="lua"> local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); ... strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil); </syntaxhighlight> == {{Śródtytuł|p.ARCHIWLubSTARE}}{{Code|p.ARCHIWLubSTARE}} == Funkcja zamieniająca kod niedozwolony przez dany szablon na kod typu: {{Code|obiekt}} {{LinkPatrz|obiekt}} lub {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, o pewnym numerze ustalanym przez {{Code|kod}} {{LinkPatrz|kod}} lub funkcję: {{Code|{{sr|#p.NumerSzablonuObiektu|p=Szablonowe}}}}, o właściwym kodzie pisanym przez: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Funkcja zwraca ten kod z drugim parametrem, który jest numer tego kodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Kod stary szablonowy, jeszcze przed zamianą. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Alternatywny typ obiektu po zamianie niż {{Code|ARCHIW}} {{Patrz|ARCHIW}}. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Alternatywny numer obiektu o typie: {{LinkPatrz|obiekt}} lub {{LinkPatrz|ARCHIW}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy kodów tekstu zakodowanego. }} == {{Śródtytuł|p.DekodowanieNazwySzablonu}}{{Code|p.DekodowanieNazwySzablonu}} == {{PobierzŚródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|klucz=tak|klucz2=}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = Funkcja przyjmuje te same parametry, co: {{LinkZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}.| komórka1 = tak | 2 = Parametry dadatkowe: | nagłówek2 = tak | 3 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _3 = Wartość fałszywa, wtedy funkcja nie uwzględnia modyfikatorów przy dekodowaniu, w takiej ssytuacj, jak ona to wykryje, to natychmiast zwraca wynik. | 4 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _4 = Wartość fałszywa, wtedy zmienne kluczowe dla szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, są kodowane w specjalnych kodach: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}. }} Gdy funkcja nie wykryła żadnego kody w: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, to jest zakańczana z wynikiem: <syntaxhighlight lang="lua"> return nil,true; </syntaxhighlight> Gdy nie uwzględnia modyfikatorów, ale w tej nazwie są one jednak jakieś, rozważając ogólnie, to funkcja zakańcza się: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> A gdy jednak tą nazwę odkodowano, i ewentualnie rozwinięto specjalną funkcją: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, to wtedy mamy: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> g61uaz885lqizyefx3bmytonvkf81mb 560357 560356 2026-11-01T00:01:42Z Persino 2851 /* {{Śródtytuł|p.RozwijanieZakodowanejNazwySzablonu}}{{Code|p.RozwijanieZakodowanejNazwySzablonu}} */ 560357 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.RozwijanieZakodowanejNazwySzablonu}}{{Code|p.RozwijanieZakodowanejNazwySzablonu}} == {{Śródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|bez preprocess=tak|klucz=tak|klucz2=tak|tekst={{#if:{{{klucz|}}}| Funkcja do dekodowania i rozwijania nazwy szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, przy pomocy uchwytu bazy: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu}}, lub tabeli bazy zakodowania tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, a jeżeli ona posiada w sobie wywołania: {{lk|Szablony stronicowe|szablonów stronicowych}}, to one są zamieniane kody typu: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, przy fałszywej wartości zmiennej: {{Code|czy_z_kluczem}} {{LinkPatrz|czy_z_kluczem}}, a przy innej już nie, wtedy takie kody są pozostawione bez rozwijania, aby {{ld|StronicowyParser|Stronicowy Parser}} nie wpadł w nieskończoną pętle, która nigdy się nie kończy, aby zapobiec temu, to tak trzeba robić. Jeżeli w nazwie tego nie ma żadnego kodu, to z nim nic nie jest robione, a jak nie ma żadnego tworu szablonowego, to ona nie jest rozwijana względem funkcji: {{LzLua|frame:preprocess}}. Funkcja też jest używana w wersji {{#if:{{{klucz2|}}}|po wydzieleniu|przed wydzieleniem}} opcji modyfikatorowych, podczas ustalania nazwy szablonu, czy parsera, to robi się zwykle {{#if:{{{klucz2|}}}|po|przed}}: {{Code|{{sr|#p.WydzielanieOpcjiModyfikatorowych|p=Szablonowe}}}}, która wydziela nazwę, modyfikatory w postaci łańcucha znaków i tabele użytych modyfikatorów. | tak}} }} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Opis parametrów funkcji {{ZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}: {{OpisParametrów | 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do odkodowania. | 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Uchwyt bazy zakodowanego tekstu, używany zamiast: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w postaci szablonowej, w takiej postaci jaką się go wywołuje w szablnach. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy zakodowanego tekstu wikikodu. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela rozkładów niektórych, ale niekoniecznie, elementów na czynniki pierwsze. }} ; Kroki postępowania funkcji{{dk}} Funkcja używa funkcji: {{Code|{{sr|#p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych|p=Szablonowe}}}} lub {{Code|{{sr|#p.CzyModyfikatoryCharakterystyczneSzablonowe|p=Szablonowe}}}}, wtedy jeśli któraś z nich coś wykryła, to wtedy funkcja zwraca wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Dalej, jeśli funkcja ominęła powyższy krok instrukcji, jest wykonywana: {{LinkŚródtytuł|p.DekodowanieNazwySzablonu}}, a jeśli ona nic nie zrobiła, ale nazwa szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, zawiera jakiś kod, wtedy druki parametr wskazuje na niepowodzenie, w takim wypadku wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Jeśli wszystko poszło dobrze, to wtedy funkcja zwraca zmodyfikowany lub nienaruszony, jeśli w nim nie ma żadnych kodów, wynik z drugim parametrem prawdziwym: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> Drugi parametr oznacza tutaj, że jakiś wynik mamy. == {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} == Funkcja do dekodowania tekstu i rozwijania go funkcją: {{LzLua|frame:preprocess}}. Funkcja {{lk|szablony stronicowe}} zamienia na kod symboliczny, a inne już są w postaci normalnych wywołań, całość jest rozwijana tą funkcją. Funkcja używa podwójnego uruchamiania swoich funkcji, najpierw zbiera parametry, dzięki którym ma być uruchamiana, a później ona tak zwraca inną funkcją, którą dekodujemy właściwie tekst. W tym drugim działa: {{LinkŚródtytuł|p.DekodowanieTekstuNazwLinku|StronicowyParser/Pomocne}}, której dwa zwrócone wynik za jednym razem są zwracane przez tą funkcję zwracaną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieTekstu(nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony) ... end; end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}. | 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} | _5 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Potrzebne/Tom III}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Potrzebne/Tom III}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Potrzebne/Tom III}}. | 6 = {{Code|nazwa_artykulu}} | _6 = Jak w: {{LinkPatrz|nazwa_artykulu|StronicowyParser/Potrzebne/Tom III}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Pomocne}}. | 2 = {{Code|tryb}} | _2 = Jak w: {{LinkPatrz|tryb|StronicowyParser/Pomocne}}. | 3 = {{Code|czy_nie_odstepy}} | _3 = Jak w: {{LinkPatrz|czy_nie_odstepy|StronicowyParser/Pomocne}}. | 4 = {{Code|drugi_wynik}} | _4 = Jak w: {{LinkPatrz|drugi_wynik|StronicowyParser/Pomocne}}. | 5 = {{Code|czy_drugi_wynik_przetworzony}} | _5 = Jak w: {{LinkPatrz|czy_drugi_wynik_przetworzony|StronicowyParser/Pomocne}}. }} Funkcja zwraca te same parametry, co funkcja, o którą jest zbudowane ciało, dzięki tego jest powtórzenie działania tego jak funkcja zwracana. Przykład działania funkcji: <syntaxhighlight lang="lua"> local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); ... strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil); </syntaxhighlight> == {{Śródtytuł|p.ARCHIWLubSTARE}}{{Code|p.ARCHIWLubSTARE}} == Funkcja zamieniająca kod niedozwolony przez dany szablon na kod typu: {{Code|obiekt}} {{LinkPatrz|obiekt}} lub {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, o pewnym numerze ustalanym przez {{Code|kod}} {{LinkPatrz|kod}} lub funkcję: {{Code|{{sr|#p.NumerSzablonuObiektu|p=Szablonowe}}}}, o właściwym kodzie pisanym przez: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Funkcja zwraca ten kod z drugim parametrem, który jest numer tego kodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Kod stary szablonowy, jeszcze przed zamianą. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Alternatywny typ obiektu po zamianie niż {{Code|ARCHIW}} {{Patrz|ARCHIW}}. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Alternatywny numer obiektu o typie: {{LinkPatrz|obiekt}} lub {{LinkPatrz|ARCHIW}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy kodów tekstu zakodowanego. }} == {{Śródtytuł|p.DekodowanieNazwySzablonu}}{{Code|p.DekodowanieNazwySzablonu}} == {{PobierzŚródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|klucz=tak|klucz2=}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = Funkcja przyjmuje te same parametry, co: {{LinkZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}.| komórka1 = tak | 2 = Parametry dadatkowe: | nagłówek2 = tak | 3 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _3 = Wartość fałszywa, wtedy funkcja nie uwzględnia modyfikatorów przy dekodowaniu, w takiej ssytuacj, jak ona to wykryje, to natychmiast zwraca wynik. | 4 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _4 = Wartość fałszywa, wtedy zmienne kluczowe dla szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, są kodowane w specjalnych kodach: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}. }} Gdy funkcja nie wykryła żadnego kody w: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, to jest zakańczana z wynikiem: <syntaxhighlight lang="lua"> return nil,true; </syntaxhighlight> Gdy nie uwzględnia modyfikatorów, ale w tej nazwie są one jednak jakieś, rozważając ogólnie, to funkcja zakańcza się: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> A gdy jednak tą nazwę odkodowano, i ewentualnie rozwinięto specjalną funkcją: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, to wtedy mamy: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2stx21gyera11v070lskmnruvr1pxih 560358 560357 2026-11-01T00:05:07Z Persino 2851 560358 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.RozwijanieZakodowanejNazwySzablonu}}{{Code|p.RozwijanieZakodowanejNazwySzablonu}} == {{Śródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|bez preprocess=tak|klucz=tak|klucz2=tak|tekst={{#if:{{{klucz|}}}| Funkcja do dekodowania i rozwijania nazwy szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, przy pomocy uchwytu bazy: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu}}, lub tabeli bazy zakodowania tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, a jeżeli ona posiada w sobie wywołania: {{lk|Szablony stronicowe|szablonów stronicowych}}, to one są zamieniane kody typu: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}{{#if:{{{klucz2|}}}||, przy fałszywej wartości zmiennej: {{Code|czy_z_kluczem}} {{LinkPatrz|czy_z_kluczem}}, a przy innej już nie}}, wtedy takie kody są pozostawione bez rozwijania, aby {{ld|StronicowyParser|Stronicowy Parser}} nie wpadł w nieskończoną pętle, która nigdy się nie kończy, aby zapobiec temu, to tak trzeba robić. Jeżeli w nazwie tego nie ma żadnego kodu, to z nim nic nie jest robione, a jak nie ma żadnego tworu szablonowego, to ona nie jest rozwijana względem funkcji: {{LzLua|frame:preprocess}}. Funkcja też jest używana w wersji {{#if:{{{klucz2|}}}|po wydzieleniu|przed wydzieleniem}} opcji modyfikatorowych, podczas ustalania nazwy szablonu, czy parsera, to robi się zwykle {{#if:{{{klucz2|}}}|po|przed}}: {{Code|{{sr|#p.WydzielanieOpcjiModyfikatorowych|p=Szablonowe}}}}, która wydziela nazwę, modyfikatory w postaci łańcucha znaków i tabele użytych modyfikatorów. | tak}} }} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Opis parametrów funkcji {{ZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}: {{OpisParametrów | 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do odkodowania. | 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Uchwyt bazy zakodowanego tekstu, używany zamiast: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w postaci szablonowej, w takiej postaci jaką się go wywołuje w szablnach. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy zakodowanego tekstu wikikodu. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela rozkładów niektórych, ale niekoniecznie, elementów na czynniki pierwsze. }} ; Kroki postępowania funkcji{{dk}} Funkcja używa funkcji: {{Code|{{sr|#p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych|p=Szablonowe}}}} lub {{Code|{{sr|#p.CzyModyfikatoryCharakterystyczneSzablonowe|p=Szablonowe}}}}, wtedy jeśli któraś z nich coś wykryła, to wtedy funkcja zwraca wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Dalej, jeśli funkcja ominęła powyższy krok instrukcji, jest wykonywana: {{LinkŚródtytuł|p.DekodowanieNazwySzablonu}}, a jeśli ona nic nie zrobiła, ale nazwa szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, zawiera jakiś kod, wtedy druki parametr wskazuje na niepowodzenie, w takim wypadku wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Jeśli wszystko poszło dobrze, to wtedy funkcja zwraca zmodyfikowany lub nienaruszony, jeśli w nim nie ma żadnych kodów, wynik z drugim parametrem prawdziwym: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> Drugi parametr oznacza tutaj, że jakiś wynik mamy. == {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} == Funkcja do dekodowania tekstu i rozwijania go funkcją: {{LzLua|frame:preprocess}}. Funkcja {{lk|szablony stronicowe}} zamienia na kod symboliczny, a inne już są w postaci normalnych wywołań, całość jest rozwijana tą funkcją. Funkcja używa podwójnego uruchamiania swoich funkcji, najpierw zbiera parametry, dzięki którym ma być uruchamiana, a później ona tak zwraca inną funkcją, którą dekodujemy właściwie tekst. W tym drugim działa: {{LinkŚródtytuł|p.DekodowanieTekstuNazwLinku|StronicowyParser/Pomocne}}, której dwa zwrócone wynik za jednym razem są zwracane przez tą funkcję zwracaną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieTekstu(nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony) ... end; end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}. | 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} | _5 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Potrzebne/Tom III}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Potrzebne/Tom III}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Potrzebne/Tom III}}. | 6 = {{Code|nazwa_artykulu}} | _6 = Jak w: {{LinkPatrz|nazwa_artykulu|StronicowyParser/Potrzebne/Tom III}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Pomocne}}. | 2 = {{Code|tryb}} | _2 = Jak w: {{LinkPatrz|tryb|StronicowyParser/Pomocne}}. | 3 = {{Code|czy_nie_odstepy}} | _3 = Jak w: {{LinkPatrz|czy_nie_odstepy|StronicowyParser/Pomocne}}. | 4 = {{Code|drugi_wynik}} | _4 = Jak w: {{LinkPatrz|drugi_wynik|StronicowyParser/Pomocne}}. | 5 = {{Code|czy_drugi_wynik_przetworzony}} | _5 = Jak w: {{LinkPatrz|czy_drugi_wynik_przetworzony|StronicowyParser/Pomocne}}. }} Funkcja zwraca te same parametry, co funkcja, o którą jest zbudowane ciało, dzięki tego jest powtórzenie działania tego jak funkcja zwracana. Przykład działania funkcji: <syntaxhighlight lang="lua"> local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); ... strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil); </syntaxhighlight> == {{Śródtytuł|p.ARCHIWLubSTARE}}{{Code|p.ARCHIWLubSTARE}} == Funkcja zamieniająca kod niedozwolony przez dany szablon na kod typu: {{Code|obiekt}} {{LinkPatrz|obiekt}} lub {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, o pewnym numerze ustalanym przez {{Code|kod}} {{LinkPatrz|kod}} lub funkcję: {{Code|{{sr|#p.NumerSzablonuObiektu|p=Szablonowe}}}}, o właściwym kodzie pisanym przez: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Funkcja zwraca ten kod z drugim parametrem, który jest numer tego kodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Kod stary szablonowy, jeszcze przed zamianą. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Alternatywny typ obiektu po zamianie niż {{Code|ARCHIW}} {{Patrz|ARCHIW}}. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Alternatywny numer obiektu o typie: {{LinkPatrz|obiekt}} lub {{LinkPatrz|ARCHIW}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy kodów tekstu zakodowanego. }} == {{Śródtytuł|p.DekodowanieNazwySzablonu}}{{Code|p.DekodowanieNazwySzablonu}} == {{PobierzŚródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|klucz=tak|klucz2=}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = Funkcja przyjmuje te same parametry, co: {{LinkZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}.| komórka1 = tak | 2 = Parametry dadatkowe: | nagłówek2 = tak | 3 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _3 = Wartość fałszywa, wtedy funkcja nie uwzględnia modyfikatorów przy dekodowaniu, w takiej ssytuacj, jak ona to wykryje, to natychmiast zwraca wynik. | 4 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _4 = Wartość fałszywa, wtedy zmienne kluczowe dla szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, są kodowane w specjalnych kodach: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}. }} Gdy funkcja nie wykryła żadnego kody w: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, to jest zakańczana z wynikiem: <syntaxhighlight lang="lua"> return nil,true; </syntaxhighlight> Gdy nie uwzględnia modyfikatorów, ale w tej nazwie są one jednak jakieś, rozważając ogólnie, to funkcja zakańcza się: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> A gdy jednak tą nazwę odkodowano, i ewentualnie rozwinięto specjalną funkcją: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, to wtedy mamy: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8i8ugh06hq5ilc5s4gyhy274hj5hn41 560359 560358 2026-11-01T00:05:55Z Persino 2851 /* {{Śródtytuł|p.RozwijanieZakodowanejNazwySzablonu}}{{Code|p.RozwijanieZakodowanejNazwySzablonu}} */ 560359 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.RozwijanieZakodowanejNazwySzablonu}}{{Code|p.RozwijanieZakodowanejNazwySzablonu}} == {{Śródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|bez preprocess=tak|klucz=tak|klucz2=tak|tekst={{#if:{{{klucz|}}}| Funkcja do dekodowania i rozwijania nazwy szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, przy pomocy uchwytu bazy: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu}}, lub tabeli bazy zakodowania tekstu: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, a jeżeli ona posiada w sobie wywołania: {{lk|Szablony stronicowe|szablonów stronicowych}}, to one są zamieniane kody typu: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}{{#if:{{{klucz2|}}}||, przy fałszywej wartości zmiennej: {{Code|czy_z_kluczem}} {{LinkPatrz|czy_z_kluczem}}, a przy innej już nie, wtedy takie kody są pozostawione bez rozwijania}}, aby {{ld|StronicowyParser|Stronicowy Parser}} nie wpadł w nieskończoną pętle, która nigdy się nie kończy, aby zapobiec temu, to tak trzeba robić. Jeżeli w nazwie tego nie ma żadnego kodu, to z nim nic nie jest robione, a jak nie ma żadnego tworu szablonowego, to ona nie jest rozwijana względem funkcji: {{LzLua|frame:preprocess}}. Funkcja też jest używana w wersji {{#if:{{{klucz2|}}}|po wydzieleniu|przed wydzieleniem}} opcji modyfikatorowych, podczas ustalania nazwy szablonu, czy parsera, to robi się zwykle {{#if:{{{klucz2|}}}|po|przed}}: {{Code|{{sr|#p.WydzielanieOpcjiModyfikatorowych|p=Szablonowe}}}}, która wydziela nazwę, modyfikatory w postaci łańcucha znaków i tabele użytych modyfikatorów. | tak}} }} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Opis parametrów funkcji {{ZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}: {{OpisParametrów | 1 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _1 = Nazwa szablonu do odkodowania. | 2 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _2 = Uchwyt bazy zakodowanego tekstu, używany zamiast: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 3 = {{Code|nazwa_modulu_szablonowa}} {{Patrz|nazwa_modulu_szablonowa}} | _3 = Nazwa modułu w postaci szablonowej, w takiej postaci jaką się go wywołuje w szablnach. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy zakodowanego tekstu wikikodu. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela rozkładów niektórych, ale niekoniecznie, elementów na czynniki pierwsze. }} ; Kroki postępowania funkcji{{dk}} Funkcja używa funkcji: {{Code|{{sr|#p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych|p=Szablonowe}}}} lub {{Code|{{sr|#p.CzyModyfikatoryCharakterystyczneSzablonowe|p=Szablonowe}}}}, wtedy jeśli któraś z nich coś wykryła, to wtedy funkcja zwraca wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Dalej, jeśli funkcja ominęła powyższy krok instrukcji, jest wykonywana: {{LinkŚródtytuł|p.DekodowanieNazwySzablonu}}, a jeśli ona nic nie zrobiła, ale nazwa szablonu: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, zawiera jakiś kod, wtedy druki parametr wskazuje na niepowodzenie, w takim wypadku wynik: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> Jeśli wszystko poszło dobrze, to wtedy funkcja zwraca zmodyfikowany lub nienaruszony, jeśli w nim nie ma żadnych kodów, wynik z drugim parametrem prawdziwym: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> Drugi parametr oznacza tutaj, że jakiś wynik mamy. == {{Śródtytuł|p.DekodowanieTekstu}}{{Code|p.DekodowanieTekstu}} == Funkcja do dekodowania tekstu i rozwijania go funkcją: {{LzLua|frame:preprocess}}. Funkcja {{lk|szablony stronicowe}} zamienia na kod symboliczny, a inne już są w postaci normalnych wywołań, całość jest rozwijana tą funkcją. Funkcja używa podwójnego uruchamiania swoich funkcji, najpierw zbiera parametry, dzięki którym ma być uruchamiana, a później ona tak zwraca inną funkcją, którą dekodujemy właściwie tekst. W tym drugim działa: {{LinkŚródtytuł|p.DekodowanieTekstuNazwLinku|StronicowyParser/Pomocne}}, której dwa zwrócone wynik za jednym razem są zwracane przez tą funkcję zwracaną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieTekstu(nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony) ... end; end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|nazwa_modulu}} | _1 = Jak w: {{LinkPatrz|nazwa_modulu}}. | 2 = {{Code|nazwa_modulu_szablonowa}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_szablonowa}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} | _5 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Potrzebne/Tom III}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Potrzebne/Tom III}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Potrzebne/Tom III}}. | 6 = {{Code|nazwa_artykulu}} | _6 = Jak w: {{LinkPatrz|nazwa_artykulu|StronicowyParser/Potrzebne/Tom III}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Pomocne}}. | 2 = {{Code|tryb}} | _2 = Jak w: {{LinkPatrz|tryb|StronicowyParser/Pomocne}}. | 3 = {{Code|czy_nie_odstepy}} | _3 = Jak w: {{LinkPatrz|czy_nie_odstepy|StronicowyParser/Pomocne}}. | 4 = {{Code|drugi_wynik}} | _4 = Jak w: {{LinkPatrz|drugi_wynik|StronicowyParser/Pomocne}}. | 5 = {{Code|czy_drugi_wynik_przetworzony}} | _5 = Jak w: {{LinkPatrz|czy_drugi_wynik_przetworzony|StronicowyParser/Pomocne}}. }} Funkcja zwraca te same parametry, co funkcja, o którą jest zbudowane ciało, dzięki tego jest powtórzenie działania tego jak funkcja zwracana. Przykład działania funkcji: <syntaxhighlight lang="lua"> local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); ... strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil); </syntaxhighlight> == {{Śródtytuł|p.ARCHIWLubSTARE}}{{Code|p.ARCHIWLubSTARE}} == Funkcja zamieniająca kod niedozwolony przez dany szablon na kod typu: {{Code|obiekt}} {{LinkPatrz|obiekt}} lub {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}, o pewnym numerze ustalanym przez {{Code|kod}} {{LinkPatrz|kod}} lub funkcję: {{Code|{{sr|#p.NumerSzablonuObiektu|p=Szablonowe}}}}, o właściwym kodzie pisanym przez: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}. Funkcja zwraca ten kod z drugim parametrem, który jest numer tego kodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Kod stary szablonowy, jeszcze przed zamianą. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Alternatywny typ obiektu po zamianie niż {{Code|ARCHIW}} {{Patrz|ARCHIW}}. | 3 = {{Code|kod}} {{Patrz|kod}} | _3 = Alternatywny numer obiektu o typie: {{LinkPatrz|obiekt}} lub {{LinkPatrz|ARCHIW}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Tablica bazy kodów tekstu zakodowanego. }} == {{Śródtytuł|p.DekodowanieNazwySzablonu}}{{Code|p.DekodowanieNazwySzablonu}} == {{PobierzŚródtekst|uchwyt=p.RozwijanieZakodowanejNazwySzablonu|klucz=tak|klucz2=}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = Funkcja przyjmuje te same parametry, co: {{LinkZobaczTeż|p.RozwijanieZakodowanejNazwySzablonu}}.| komórka1 = tak | 2 = Parametry dadatkowe: | nagłówek2 = tak | 3 = {{Code|czy_uwzgledniac_modyfikatory}} {{Patrz|czy_uwzgledniac_modyfikatory}} | _3 = Wartość fałszywa, wtedy funkcja nie uwzględnia modyfikatorów przy dekodowaniu, w takiej ssytuacj, jak ona to wykryje, to natychmiast zwraca wynik. | 4 = {{Code|czy_z_kluczem}} {{Patrz|czy_z_kluczem}} | _4 = Wartość fałszywa, wtedy zmienne kluczowe dla szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, są kodowane w specjalnych kodach: {{Code|ARCHIW}} {{LinkPatrz|ARCHIW}}. }} Gdy funkcja nie wykryła żadnego kody w: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu}}, to jest zakańczana z wynikiem: <syntaxhighlight lang="lua"> return nil,true; </syntaxhighlight> Gdy nie uwzględnia modyfikatorów, ale w tej nazwie są one jednak jakieś, rozważając ogólnie, to funkcja zakańcza się: <syntaxhighlight lang="lua"> return nil,false; </syntaxhighlight> A gdy jednak tą nazwę odkodowano, i ewentualnie rozwinięto specjalną funkcją: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, to wtedy mamy: <syntaxhighlight lang="lua"> return nazwa_szablonu,true; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ozon3cn1u35h8z0vimwhnl3govuhgi1 Wikibooks:Moduły/StronicowyParser/Potrzebne/Tom IX 4 64475 560360 559933 2026-11-01T07:18:46Z Persino 2851 /* {{Śródtytuł|p.TOCSilnik}}{{Code|p.TOCSilnik}} */ 560360 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.TOCSilnik}}{{Code|p.TOCSilnik}} == Funkcja generująca samo ciało spisu treści podręcznika, czyli bez jego formatowania i nie w ramce. Funkcja ma możliwość ukrywania pewnych elementów spisu, robi to za pomocą właściwości: {{Code|display:none;}}, przy pomocy: {{Code|bez_przypisow}} {{Patrz|bez_przypisow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Tablica ramki funkcji tablicy transportu. | 2 = {{Code|lista_elementow_spisu_tresci}} {{Patrz|lista_elementow_spisu_tresci}} | _2 = Tablica listy pozycji elementów adresów i nagłówków spisu treści. | 3 = {{Code|atrybuty}} {{Patrz|atrybuty}} | _3 = Atrybuty znacznika {{Tag|ul}}. | 4 = {{Code|bez_przypisow}} {{Patrz|bez_przypisow}} | _4 = Parametr logiczny niepusty, wtedy to odpowiada wartości prawdziwej. }} == {{Śródtytuł|p.TOC}}{{Code|p.TOC}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ofvfthonj6yeo9y5xmdl17zxcfz6psk 560361 560360 2026-11-01T07:19:05Z Persino 2851 /* {{Śródtytuł|p.TOCSilnik}}{{Code|p.TOCSilnik}} */ 560361 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.TOCSilnik}}{{Code|p.TOCSilnik}} == Funkcja generująca samo ciało spisu treści podręcznika, czyli bez jego formatowania i nie w ramce. Funkcja ma możliwość ukrywania pewnych elementów spisu, robi to za pomocą właściwości: {{Code|display:none;}}, przy pomocy: {{Code|bez_przypisow}} {{LinkPatrz|bez_przypisow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Tablica ramki funkcji tablicy transportu. | 2 = {{Code|lista_elementow_spisu_tresci}} {{Patrz|lista_elementow_spisu_tresci}} | _2 = Tablica listy pozycji elementów adresów i nagłówków spisu treści. | 3 = {{Code|atrybuty}} {{Patrz|atrybuty}} | _3 = Atrybuty znacznika {{Tag|ul}}. | 4 = {{Code|bez_przypisow}} {{Patrz|bez_przypisow}} | _4 = Parametr logiczny niepusty, wtedy to odpowiada wartości prawdziwej. }} == {{Śródtytuł|p.TOC}}{{Code|p.TOC}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> slra9eek9fpwxeu6z4o5u7h4x27lp1g 560362 560361 2026-11-01T07:39:49Z Persino 2851 sp 560362 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.TOCSilnik}}{{Code|p.TOCSilnik}} == Funkcja generująca samo ciało spisu treści podręcznika, czyli bez jego formatowania i nie w ramce. Funkcja ma możliwość ukrywania pewnych elementów spisu, w tym przypadku nagłówków: przypisów i uwag oraz bibliografii i licencji, tak generowanych przez: {{lk|Szablony przypisów|szablony przypisów}}, robi to za pomocą właściwości: {{Code|display:none;}}, przy pomocy: {{Code|bez_przypisow}} {{LinkPatrz|bez_przypisow}}. Funkcja tworzy spis treści w sposób zagnieżdżony mieszcząc jedną listy w innej o takim samym znaczniku: {{tag|ul}}, mówiąc w sposób ogólny. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Tablica ramki funkcji tablicy transportu. | 2 = {{Code|lista_elementow_spisu_tresci}} {{Patrz|lista_elementow_spisu_tresci}} | _2 = Tablica listy pozycji elementów adresów i nagłówków spisu treści. | 3 = {{Code|atrybuty}} {{Patrz|atrybuty}} | _3 = Atrybuty znacznika {{Tag|ul}}. | 4 = {{Code|bez_przypisow}} {{Patrz|bez_przypisow}} | _4 = Parametr logiczny niepusty, wtedy to odpowiada wartości prawdziwej. }} Funkcja umieszcza poszczególne linki, jeśli istnieją linkujące do adresu: {{Code|nazwa_strony}} {{Patrz|nazwa_strony}}, zmiennej: {{Code|lista_elementow_spisu_tresci}} {{LinkPatrz|lista_elementow_spisu_tresci}}, przeciwnie tym adresem jest adres lokalny tego spisu. Funkcja liczy nagłówek: {{Code|adres}} {{Patrz|adres}}, i nagłówek: {{Code|naglowek}} {{Patrz|naglowek}}, spisu, w odpowiedni sposób przy pomocy funkcji: {{LinkŚródtytuł|p["PrzetwórzNagłówek"]|Specjalne/Tom VIII}}. Funkcja rozpoznaje linki do nagłówków w spisach, czy je ma ukrywać w zależności od tabeli: {{Code|{{sr|#p.napisy_wprowadzenia_tekstu_przypisowych|p=StronicowyParser/obiekty}}}} {{Patrz|p.napisy_wprowadzenia_tekstu_przypisowych}}, a ta tabela tych nagłówków jest: <syntaxhighlight lang="lua"> p.napisy_wprowadzenia_tekstu_przypisowych={ ["Przypisy"]=true, ["Uwagi"]=true, ["Bibliografia"]=true, ["Licencja"]=true, }; </syntaxhighlight> == {{Śródtytuł|p.TOC}}{{Code|p.TOC}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fdtb611b5jit2fu7pg2peudwgnz5wxe 560393 560362 2026-11-01T10:23:43Z Persino 2851 /* {{Śródtytuł|p.TOCSilnik}}{{Code|p.TOCSilnik}} */ 560393 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Potrzebne}}|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.TOCSilnik}}{{Code|p.TOCSilnik}} == Funkcja generująca samo ciało spisu treści podręcznika, czyli bez jego formatowania i nie w ramce. Funkcja ma możliwość ukrywania pewnych elementów spisu, w tym przypadku nagłówków: przypisów i uwag oraz bibliografii i licencji, tak generowanych przez: {{lk|Szablony przypisów|szablony przypisów}}, robi to za pomocą właściwości: {{Code|display:none;}}, przy pomocy: {{Code|bez_przypisow}} {{LinkPatrz|bez_przypisow}}. Funkcja tworzy spis treści w sposób zagnieżdżony mieszcząc jedną listy w innej o takim samym znaczniku: {{tag|ul}}, mówiąc w sposób ogólny. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)...end; </syntaxhighlight> Opis parametrów funkcji: {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Tablica ramki funkcji tablicy transportu. | 2 = {{Code|lista_elementow_spisu_tresci}} {{Patrz|lista_elementow_spisu_tresci}} | _2 = Tablica listy pozycji elementów adresów i nagłówków spisu treści. | 3 = {{Code|atrybuty}} {{Patrz|atrybuty}} | _3 = Atrybuty znacznika {{Tag|ul}}. | 4 = {{Code|bez_przypisow}} {{Patrz|bez_przypisow}} | _4 = Parametr logiczny niepusty, wtedy to odpowiada wartości prawdziwej. }} Funkcja umieszcza poszczególne linki, jeśli istnieją linkujące do adresu: {{Code|nazwa_strony}} {{Patrz|nazwa_strony}}, zmiennej: {{Code|lista_elementow_spisu_tresci}} {{LinkPatrz|lista_elementow_spisu_tresci}}, przeciwnie tym adresem jest adres lokalny tego spisu. Funkcja liczy nagłówek: {{Code|adres}} {{Patrz|adres}}, i nagłówek: {{Code|naglowek}} {{Patrz|naglowek}}, spisu, w odpowiedni sposób przy pomocy funkcji: {{LinkŚródtytuł|p["PrzetwórzNagłówek"]|Specjalne/Tom VIII}}. Funkcja rozpoznaje linki do nagłówków w spisach, czy je ma ukrywać w zależności od tabeli: {{Code|{{sr|#p.napisy_wprowadzenia_tekstu_przypisowych|p=StronicowyParser/obiekty}}}}, a ta tabela tych nagłówków jest: {{Tbl|uchwyt=p.napisy_wprowadzenia_tekstu_przypisowych|tekst=<syntaxhighlight lang="lua"> p.napisy_wprowadzenia_tekstu_przypisowych={ ["Przypisy"]=true, ["Uwagi"]=true, ["Bibliografia"]=true, ["Licencja"]=true, }; </syntaxhighlight>}} == {{Śródtytuł|p.TOC}}{{Code|p.TOC}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fy0dczpym2qt562c8hcjl3iizjexdd7 Szablon:Tbl 10 64501 560364 2026-11-01T08:42:42Z Persino 2851 Utworzono nową stronę „<includeonly>{{#invoke:Ramka|Szablon|Nazwa=Wypowiedzenie|rodzaj=Tbl|zmienna z parametrami rodzica=tak|zmienna z argumentami ramki=tak}}</includeonly><noinclude>{{Dokumentacja|Szablon:Wypowiedzenie/opis}}</noinclude>” 560364 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=Wypowiedzenie|rodzaj=Tbl|zmienna z parametrami rodzica=tak|zmienna z argumentami ramki=tak}}</includeonly><noinclude>{{Dokumentacja|Szablon:Wypowiedzenie/opis}}</noinclude> fuj9gtnwrvmb2eeav1lvsfqdk1wf1vj 560372 560364 2026-11-01T09:01:54Z Persino 2851 560372 wikitext text/x-wiki <includeonly><syntaxhighlight src="Szablon:Tbl/styles.css"/>{{#invoke:Ramka|Szablon|Nazwa=Wypowiedzenie|rodzaj=Tbl|zmienna z parametrami rodzica=tak|zmienna z argumentami ramki=tak}}</includeonly><noinclude>{{Dokumentacja|Szablon:Wypowiedzenie/opis}}</noinclude> faitonnruwt5kze825j1d14zckq8deg 560373 560372 2026-11-01T09:04:00Z Persino 2851 560373 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Tbl/styles.css"/>{{#invoke:Ramka|Szablon|Nazwa=Wypowiedzenie|rodzaj=Tbl|zmienna z parametrami rodzica=tak|zmienna z argumentami ramki=tak}}</includeonly><noinclude>{{Dokumentacja|Szablon:Wypowiedzenie/opis}}</noinclude> 4a3seldco4gydicq99owgd5bcq4f8w3 Szablon:Tbl/styles.css 10 64502 560374 2026-11-01T09:07:26Z Persino 2851 Utworzono nową stronę „div.tbl, div.tbl > div.mw-highlight, div.tbl > div.mw-highlight > pre{ background-color:transparent; } /*{{Kategoria|Szablony - arkusze stylów}}*/” 560374 sanitized-css text/css div.tbl, div.tbl > div.mw-highlight, div.tbl > div.mw-highlight > pre{ background-color:transparent; } /*{{Kategoria|Szablony - arkusze stylów}}*/ bq394ui1p25hauvnjx8g73xikdyswko 560375 560374 2026-11-01T09:10:22Z Persino 2851 560375 sanitized-css text/css div.tbl, div.tbl > div.mw-highlight, div.tbl > div.mw-highlight > pre{ background-color:transparent; } div.tbl > div.mw-highlight, div.tbl > div.mw-highlight > pre{ margin:0; padding:0; } /*{{Kategoria|Szablony - arkusze stylów}}*/ bs8vlq3gy9p68znlokl052bxp3zt6ua 560376 560375 2026-11-01T09:12:58Z Persino 2851 560376 sanitized-css text/css div.tbl, div.tbl > div.mw-highlight, div.tbl > div.mw-highlight > pre{ background-color:transparent; } div.tbl > div.mw-highlight, div.tbl > div.mw-highlight > pre{ margin:0; padding:0; } div.tbl > div.mw-highlight > pre{ border:0; } div.tbl{ border-color:#eaecf0; } /*{{Kategoria|Szablony - arkusze stylów}}*/ 8r38op6f29b4cvtu3wosefi6nlhpzk8 560377 560376 2026-11-01T09:13:50Z Persino 2851 560377 sanitized-css text/css div.tbl, div.tbl > div.mw-highlight, div.tbl > div.mw-highlight > pre{ background-color:transparent; } div.tbl > div.mw-highlight, div.tbl > div.mw-highlight > pre{ margin:0; padding:0; } div.tbl > div.mw-highlight > pre{ border:0; } div.tbl{ border-color:#eaecf0 !important; } /*{{Kategoria|Szablony - arkusze stylów}}*/ ow2pekhx6kefpih5g3n4sgeni38i57v 560378 560377 2026-11-01T09:14:43Z Persino 2851 560378 sanitized-css text/css div.tbl, div.tbl > div.mw-highlight, div.tbl > div.mw-highlight > pre{ background-color:transparent; } div.tbl > div.mw-highlight, div.tbl > div.mw-highlight > pre{ margin:0; padding:0; } div.tbl > div.mw-highlight > pre{ border:0; } div.tbl{ border-color:#eaecf0 !important; background-color:white !important; } /*{{Kategoria|Szablony - arkusze stylów}}*/ lkb59hksbhpbjrjm5gr0icj8m47ho2u Szablon:LinkTbl 10 64503 560386 2026-11-01T09:43:43Z Persino 2851 Utworzono nową stronę „<includeonly>{{#invoke:Ramka|Szablon|Nazwa=LinkObiekt|typ=tbl|zmienna z parametrami rodzica=tak|zmienna z argumentami ramki=tak}}</includeonly><noinclude>{{Dokumentacja|Szablon:LinkObiekt/opis}}</noinclude>” 560386 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=LinkObiekt|typ=tbl|zmienna z parametrami rodzica=tak|zmienna z argumentami ramki=tak}}</includeonly><noinclude>{{Dokumentacja|Szablon:LinkObiekt/opis}}</noinclude> oc4t39vzx0apkf05hop2bh08zpvjjzi