Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.5 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 Kategoria:Winogrona 14 17865 545875 515995 2026-06-05T05:49:01Z Persino 2851 545875 wikitext text/x-wiki Osobna kategoria: {{lk|Rodzynki|rodzynki}}. {{Kategoria|Owoce}} 4z0mc8ps4km9jatdbtiqrpp9zh464xt Kategoria:Wołowina 14 20831 545808 545800 2026-06-04T13:22:44Z EdytaT 2664 545808 wikitext text/x-wiki {{Plik|plik=Rind-Ganz-plus.svg|ramka=mały|pozycja=prawo}} === Wołowina === # Karkówka (kark, karczek) i szyja to mięso z przodu tuszy. Jest to idealne mięso do długiego gotowania, duszenia lub pieczenia (np. na gulasz). Ze względu na dużą ilość tkanki łącznej staje się ono niezwykle miękkie i kruche dopiero po kilku godzinach obróbki termicznej. # Żeberka i szponder są doskonale na gulasz i zupę, ponieważ zapewniają wyjątkowo intensywny bulion. # Mostek nadaje się do gotowania, ponieważ nawet po ugotowaniu mięso pozostaje soczyste. # Rozbratel jest idealny do gotowania, duszenia i smażenia. Szczególnie nadaje się na pieczeń wołową na kwaśno, pożywne dania jednogarnkowe i na gulasz. # Antrykot # Rostbef # Polędwica # Żeberka i łata # Łata # Łopatka # Udziec # Pachwina # Rumsztyk # pręga # Ligawa # Ogon wołowy nadaje się do duszenia i gotowania. ---- {{Kategoria|Mięsa}} 5dh6g3wlb6lxn0qhci73vblmxln40w2 545810 545808 2026-06-04T13:28:48Z EdytaT 2664 545810 wikitext text/x-wiki {{Plik|plik=Rind-Ganz-plus.svg|ramka=mały|pozycja=prawo}} === Wołowina === # Karkówka (kark, karczek) i szyja to mięso z przodu tuszy. Jest to idealne mięso do długiego gotowania, duszenia lub pieczenia (np. na gulasz). Ze względu na dużą ilość tkanki łącznej staje się ono niezwykle miękkie i kruche dopiero po kilku godzinach obróbki termicznej. # Żeberka i szponder są doskonale na gulasz i zupę, ponieważ zapewniają wyjątkowo intensywny bulion. # Mostek nadaje się do gotowania, ponieważ nawet po ugotowaniu mięso pozostaje soczyste. # Rozbratel jest idealny do gotowania, duszenia i smażenia. Szczególnie nadaje się na pieczeń wołową na kwaśno, pożywne dania jednogarnkowe i na gulasz. # Antrykot # Rostbef # Polędwica # Żeberka i łata # Łata # Łopatka # Udziec # Pachwina # Rumsztyk # pręga # Ligawa nie ma przerostów tłuszczowych i nadaje się na duszone pieczenie, zrazy oraz na tatara lub carpaccio. # Ogon wołowy nadaje się do duszenia i gotowania. ---- {{Kategoria|Mięsa}} oqejv802322xl73m7vmdbwjytosvm5x 545828 545810 2026-06-04T16:46:41Z EdytaT 2664 545828 wikitext text/x-wiki {{Plik|plik=Rind-Ganz-plus.svg|ramka=mały|pozycja=prawo}} === Wołowina === # Karkówka (kark, karczek) i szyja to mięso z przodu tuszy. Jest to idealne mięso do długiego gotowania, duszenia lub pieczenia (np. na gulasz). Ze względu na dużą ilość tkanki łącznej staje się ono niezwykle miękkie i kruche dopiero po kilku godzinach obróbki termicznej. # Żeberka i szponder są doskonale na gulasz i zupę, ponieważ zapewniają wyjątkowo intensywny bulion. # Mostek nadaje się do gotowania, ponieważ nawet po ugotowaniu mięso pozostaje soczyste. # Rozbratel jest idealny do gotowania, duszenia i smażenia. Szczególnie nadaje się na pieczeń wołową na kwaśno, pożywne dania jednogarnkowe i na gulasz. # Antrykot # Rostbef # Polędwica # Żeberka i łata # Łata # Łopatka # Udziec # Pachwina # Rumsztyk # pręga # Ligawa to wysokiej jakości, chudy element mięsa wołowego pochodzący z udźca. Nie ma przerostów tłuszczowych. Ze względu na swoją delikatność i chudość bywa nazywana "fałszywą polędwicą". Jest znacznie tańsza od prawdziwej polędwicy, dlatego chętnie kupuje się ją na na tradycyjne zrazy, duszone pieczenie, carpaccio czy tatara # Ogon wołowy nadaje się do duszenia i gotowania. ---- {{Kategoria|Mięsa}} im0xj7ra835ezmrqaeiszre1punwy6h 545829 545828 2026-06-04T17:17:00Z EdytaT 2664 545829 wikitext text/x-wiki {{Plik|plik=Rind-Ganz-plus.svg|ramka=mały|pozycja=prawo}} === Wołowina === # Karkówka (kark, karczek) i szyja to mięso z przodu tuszy. Jest to idealne mięso do długiego gotowania, duszenia lub pieczenia (np. na gulasz). Ze względu na dużą ilość tkanki łącznej staje się ono niezwykle miękkie i kruche dopiero po kilku godzinach obróbki termicznej. # Żeberka i szponder są doskonale na gulasz i zupę, ponieważ zapewniają wyjątkowo intensywny bulion. # Mostek nadaje się do gotowania, ponieważ nawet po ugotowaniu mięso pozostaje soczyste. # Rozbratel jest idealny do gotowania, duszenia i smażenia. Szczególnie nadaje się na pieczeń wołową na kwaśno, pożywne dania jednogarnkowe i na gulasz. # Antrykot # Rostbef # Polędwica # Żeberka i łata # Łata # Łopatka # Udziec # Pachwina # Rumsztyk # Pręga (goleń) to mięso ze środkowej części nogi wołowej. Nadaje się do długiego duszenia, przygotowywania gulaszów, pieczeni oraz jako baza do esencjonalnych wywarów. Jest naturalnie poprzerastana tkanką łączną i ścięgnami. Podczas powolnego gotowania kolagen zamienia się w żelatynę, dzięki której sosy naturalnie gęstnieją, stają się kleiste i pełne smaku, a mięso po długim czasie mięknie i rozpływa się w ustach. # Ligawa to wysokiej jakości, chudy element mięsa wołowego pochodzący z udźca. Nie ma przerostów tłuszczowych. Ze względu na swoją delikatność i chudość bywa nazywana "fałszywą polędwicą". Jest znacznie tańsza od prawdziwej polędwicy, dlatego chętnie kupuje się ją na na tradycyjne zrazy, duszone pieczenie, carpaccio czy tatara # Ogon wołowy nadaje się do duszenia i gotowania. ---- {{Kategoria|Mięsa}} 0ma4aky1kje3vzgkx07vdgbxsj0833r 545833 545829 2026-06-04T17:26:46Z EdytaT 2664 545833 wikitext text/x-wiki {{Plik|plik=Rind-Ganz-plus.svg|ramka=mały|pozycja=prawo}} === Wołowina === # Karkówka (kark, karczek) i szyja to mięso z przodu tuszy. Jest to idealne mięso do długiego gotowania, duszenia lub pieczenia (np. na gulasz). Ze względu na dużą ilość tkanki łącznej staje się ono niezwykle miękkie i kruche dopiero po kilku godzinach obróbki termicznej. # Żeberka i szponder są doskonale na gulasz i zupę, ponieważ zapewniają wyjątkowo intensywny bulion. # Mostek nadaje się do gotowania, ponieważ nawet po ugotowaniu mięso pozostaje soczyste. # Rozbratel jest idealny do gotowania, duszenia i smażenia. Szczególnie nadaje się na pieczeń wołową na kwaśno, pożywne dania jednogarnkowe i na gulasz. # Antrykot # Rostbef # Polędwica # Żeberka i łata # Łata # Łopatka # Udziec ## Zrazowa górna ## Zrazowa dolna to chudy, zwarty i pełen smaku element udźca. Ma grubsze i dłuższe włókna mięśniowe oraz mniejszą ilość tłuszczu niż zrazowa górna. Wymaga odpowiedniej obróbki, aby mięso stało się kruche i soczyste. Idealna na tradycyjne zrazy wołowe (zawijane), bitki, pieczenie w całości czy gulasze. Długie gotowanie na wolnym ogniu pozwala wydobyć głęboki smak i zmiękczyć włókna.Ponieważ jest to mięso chude, warto do pieczenia naszpikować je słoniną lub obłożyć boczkiem. Zapobiega to wysychaniu i dodaje soczystości. Ze względu na swoją strukturę jest nieco mniej krucha od zrazowej górnej, dlatego nie poleca się jej na szybkie steki z patelni. # Pachwina # Rumsztyk to nazwa steku pochodzącego z górnej części zadu. Mięso to nadaje się do szybkiej obróbki – smażenia lub duszenia z dużą ilością cebuli. Uwaga: w polskiej tradycji kulinarnej rumsztykiem nazywa się też kotlet z grubo siekanego mięsa wołowego. # Pręga (goleń) to mięso ze środkowej części nogi wołowej. Nadaje się do długiego duszenia, przygotowywania gulaszów, pieczeni oraz jako baza do esencjonalnych wywarów. Jest naturalnie poprzerastana tkanką łączną i ścięgnami. Podczas powolnego gotowania kolagen zamienia się w żelatynę, dzięki której sosy naturalnie gęstnieją, stają się kleiste i pełne smaku, a mięso po długim czasie mięknie i rozpływa się w ustach. # Ligawa to wysokiej jakości, chudy element mięsa wołowego pochodzący z udźca. Nie ma przerostów tłuszczowych. Ze względu na swoją delikatność i chudość bywa nazywana "fałszywą polędwicą". Jest znacznie tańsza od prawdziwej polędwicy, dlatego chętnie kupuje się ją na na tradycyjne zrazy, duszone pieczenie, carpaccio czy tatara # Ogon wołowy nadaje się do duszenia i gotowania. ---- {{Kategoria|Mięsa}} d1m66hmk0996df6o4nikcog4aqliun2 545834 545833 2026-06-04T17:27:55Z EdytaT 2664 545834 wikitext text/x-wiki {{Plik|plik=Rind-Ganz-plus.svg|ramka=mały|pozycja=prawo}} === Wołowina === # Karkówka (kark, karczek) i szyja to mięso z przodu tuszy. Jest to idealne mięso do długiego gotowania, duszenia lub pieczenia (np. na gulasz). Ze względu na dużą ilość tkanki łącznej staje się ono niezwykle miękkie i kruche dopiero po kilku godzinach obróbki termicznej. # Żeberka i szponder są doskonale na gulasz i zupę, ponieważ zapewniają wyjątkowo intensywny bulion. # Mostek nadaje się do gotowania, ponieważ nawet po ugotowaniu mięso pozostaje soczyste. # Rozbratel jest idealny do gotowania, duszenia i smażenia. Szczególnie nadaje się na pieczeń wołową na kwaśno, pożywne dania jednogarnkowe i na gulasz. # Antrykot # Rostbef # Polędwica # Żeberka i łata # Łata # Łopatka # Udziec ## Zrazowa górna ## Zrazowa dolna to chudy, zwarty i pełen smaku element udźca. Ma grubsze i dłuższe włókna mięśniowe oraz mniejszą ilość tłuszczu niż zrazowa górna. Wymaga odpowiedniej obróbki, aby mięso stało się kruche i soczyste. Idealna na tradycyjne zrazy wołowe (zawijane), bitki, pieczenie w całości czy gulasze. Długie gotowanie na wolnym ogniu pozwala wydobyć głęboki smak i zmiękczyć włókna.Ponieważ jest to mięso chude, warto do pieczenia naszpikować je słoniną lub obłożyć boczkiem. Zapobiega to wysychaniu i dodaje soczystości. Ze względu na swoją strukturę jest nieco mniej krucha od zrazowej górnej, dlatego nie poleca się jej na szybkie steki z patelni. # Pachwina # Rumsztyk to nazwa steku pochodzącego z górnej części zadu. Mięso to nadaje się do szybkiej obróbki – smażenia lub duszenia z dużą ilością cebuli. Uwaga: w polskiej tradycji kulinarnej rumsztykiem nazywa się też kotlet z grubo siekanego mięsa wołowego. # Pręga (goleń) to mięso ze środkowej części nogi wołowej. Nadaje się do długiego duszenia, przygotowywania gulaszów, pieczeni oraz jako baza do esencjonalnych wywarów. Jest naturalnie poprzerastana tkanką łączną i ścięgnami. Podczas powolnego gotowania kolagen zamienia się w żelatynę, dzięki której sosy naturalnie gęstnieją, stają się kleiste i pełne smaku, a mięso po długim czasie mięknie i rozpływa się w ustach. # Ligawa to wysokiej jakości, chudy element mięsa wołowego pochodzący z udźca. Nie ma przerostów tłuszczowych. Ze względu na swoją delikatność i chudość bywa nazywana "fałszywą polędwicą". Jest znacznie tańsza od prawdziwej polędwicy, dlatego chętnie kupuje się ją na na tradycyjne zrazy, duszone pieczenie, carpaccio czy tatara # Ogon wołowy nadaje się do duszenia i gotowania. ---- {{Kategoria|Mięsa}} say70nzh9jwikbvge7z2jl6jcdkh8km 545835 545834 2026-06-04T18:01:20Z Persino 2851 545835 wikitext text/x-wiki {{Plik|plik=Rind-Ganz-plus.svg|ramka=bezramki|pozycja=prawo}} === Wołowina === # Karkówka (kark, karczek) i szyja to mięso z przodu tuszy. Jest to idealne mięso do długiego gotowania, duszenia lub pieczenia (np. na gulasz). Ze względu na dużą ilość tkanki łącznej staje się ono niezwykle miękkie i kruche dopiero po kilku godzinach obróbki termicznej. # Żeberka i szponder są doskonale na gulasz i zupę, ponieważ zapewniają wyjątkowo intensywny bulion. # Mostek nadaje się do gotowania, ponieważ nawet po ugotowaniu mięso pozostaje soczyste. # Rozbratel jest idealny do gotowania, duszenia i smażenia. Szczególnie nadaje się na pieczeń wołową na kwaśno, pożywne dania jednogarnkowe i na gulasz. # Antrykot # Rostbef # Polędwica # Żeberka i łata # Łata # Łopatka # Udziec ## Zrazowa górna ## Zrazowa dolna to chudy, zwarty i pełen smaku element udźca. Ma grubsze i dłuższe włókna mięśniowe oraz mniejszą ilość tłuszczu niż zrazowa górna. Wymaga odpowiedniej obróbki, aby mięso stało się kruche i soczyste. Idealna na tradycyjne zrazy wołowe (zawijane), bitki, pieczenie w całości czy gulasze. Długie gotowanie na wolnym ogniu pozwala wydobyć głęboki smak i zmiękczyć włókna.Ponieważ jest to mięso chude, warto do pieczenia naszpikować je słoniną lub obłożyć boczkiem. Zapobiega to wysychaniu i dodaje soczystości. Ze względu na swoją strukturę jest nieco mniej krucha od zrazowej górnej, dlatego nie poleca się jej na szybkie steki z patelni. # Pachwina # Rumsztyk to nazwa steku pochodzącego z górnej części zadu. Mięso to nadaje się do szybkiej obróbki – smażenia lub duszenia z dużą ilością cebuli. Uwaga: w polskiej tradycji kulinarnej rumsztykiem nazywa się też kotlet z grubo siekanego mięsa wołowego. # Pręga (goleń) to mięso ze środkowej części nogi wołowej. Nadaje się do długiego duszenia, przygotowywania gulaszów, pieczeni oraz jako baza do esencjonalnych wywarów. Jest naturalnie poprzerastana tkanką łączną i ścięgnami. Podczas powolnego gotowania kolagen zamienia się w żelatynę, dzięki której sosy naturalnie gęstnieją, stają się kleiste i pełne smaku, a mięso po długim czasie mięknie i rozpływa się w ustach. # Ligawa to wysokiej jakości, chudy element mięsa wołowego pochodzący z udźca. Nie ma przerostów tłuszczowych. Ze względu na swoją delikatność i chudość bywa nazywana "fałszywą polędwicą". Jest znacznie tańsza od prawdziwej polędwicy, dlatego chętnie kupuje się ją na na tradycyjne zrazy, duszone pieczenie, carpaccio czy tatara # Ogon wołowy nadaje się do duszenia i gotowania. ---- {{Kategoria|Mięsa}} sgjr3fdsa1dmt8oilolpwithm1g6mfc 545874 545835 2026-06-05T05:38:08Z Persino 2851 545874 wikitext text/x-wiki {{Plik|plik=Rind-Ganz-plus.svg|ramka=bezramki|pozycja=prawo}} === Wołowina === # Karkówka (kark, karczek) i szyja to mięso z przodu tuszy. Jest to idealne mięso do długiego gotowania, duszenia lub pieczenia (np. na gulasz). Ze względu na dużą ilość tkanki łącznej staje się ono niezwykle miękkie i kruche dopiero po kilku godzinach obróbki termicznej. # Żeberka i szponder są doskonale na gulasz i zupę, ponieważ zapewniają wyjątkowo intensywny bulion. # Mostek nadaje się do gotowania, ponieważ nawet po ugotowaniu mięso pozostaje soczyste. # Rozbratel jest idealny do gotowania, duszenia i smażenia. Szczególnie nadaje się na pieczeń wołową na kwaśno, pożywne dania jednogarnkowe i na gulasz. # Antrykot # Rostbef # Polędwica # Żeberka i łata # Łata # Łopatka # Udziec ## Zrazowa górna ## Zrazowa dolna to chudy, zwarty i pełen smaku element udźca. Ma grubsze i dłuższe włókna mięśniowe oraz mniejszą ilość tłuszczu niż zrazowa górna. Wymaga odpowiedniej obróbki, aby mięso stało się kruche i soczyste. Idealna na tradycyjne zrazy wołowe (zawijane), bitki, pieczenie w całości czy gulasze. Długie gotowanie na wolnym ogniu pozwala wydobyć głęboki smak i zmiękczyć włókna.Ponieważ jest to mięso chude, warto do pieczenia naszpikować je słoniną lub obłożyć boczkiem. Zapobiega to wysychaniu i dodaje soczystości. Ze względu na swoją strukturę jest nieco mniej krucha od zrazowej górnej, dlatego nie poleca się jej na szybkie steki z patelni. # Pachwina # Rumsztyk to nazwa steku pochodzącego z górnej części zadu. Mięso to nadaje się do szybkiej obróbki – smażenia lub duszenia z dużą ilością cebuli. Uwaga: w polskiej tradycji kulinarnej rumsztykiem nazywa się też kotlet z grubo siekanego mięsa wołowego. # Pręga (goleń) to mięso ze środkowej części nogi wołowej. Nadaje się do długiego duszenia, przygotowywania gulaszów, pieczeni oraz jako baza do esencjonalnych wywarów. Jest naturalnie poprzerastana tkanką łączną i ścięgnami. Podczas powolnego gotowania kolagen zamienia się w żelatynę, dzięki której sosy naturalnie gęstnieją, stają się kleiste i pełne smaku, a mięso po długim czasie mięknie i rozpływa się w ustach. # Ligawa to wysokiej jakości, chudy element mięsa wołowego pochodzący z udźca. Nie ma przerostów tłuszczowych. Ze względu na swoją delikatność i chudość bywa nazywana "fałszywą polędwicą". Jest znacznie tańsza od prawdziwej polędwicy, dlatego chętnie kupuje się ją na na tradycyjne zrazy, duszone pieczenie, carpaccio czy tatara # Ogon wołowy nadaje się do duszenia i gotowania. ---- {{Kategoria|Mięsa}} ab2uwhpvtl0d4lygxo921mmmc2waip2 Kategoria:Parówki 14 20931 545873 128966 2026-06-05T05:37:15Z Persino 2851 545873 wikitext text/x-wiki {{Kategoria|Wędliny}} 4ixyes8qw0mnan9s236yc5y8aebla0v Kategoria:Wędliny 14 20932 545871 128967 2026-06-05T05:35:59Z Persino 2851 545871 wikitext text/x-wiki {{Kategoria|Mięsa}} npytvd2d61m3b6tti1ojcjiprzekxoc Kategoria:Śmietana 14 20965 545878 515945 2026-06-05T06:13:00Z Persino 2851 545878 wikitext text/x-wiki {{Wikipedia|Śmietana|śmietany}} Śmietana (śmietana kwaśna, śmietana ukwaszona) – spożywczy produkt nabiałowy, otrzymywany ze [[:Kategoria:Śmietanka|śmietanki]] (śmietany słodkiej). {{Kategoria|Nabiał}} fncoivtlm34es5aigokryzhgcyl0li6 Kategoria:Wieprzowina 14 20988 545867 266591 2026-06-05T05:33:18Z Persino 2851 545867 wikitext text/x-wiki {{Kategoria|Mięsa}} npytvd2d61m3b6tti1ojcjiprzekxoc Kategoria:Cielęcina 14 20992 545879 515918 2026-06-05T06:25:32Z Persino 2851 545879 wikitext text/x-wiki {{Wikipedia|Cielęcina}} {{Kategoria|Mięsa}} ev6kmajv9svvrs9rl0j8kkzhu2fpwc5 Kategoria:Ciastka (wypieki) 14 31756 545865 525307 2026-06-05T05:27:09Z Persino 2851 545865 wikitext text/x-wiki {{Kategoria|Desery}} m9hld9xmjq0tup2uzgpc3puqalp27c7 Kategoria:Pączki i ciastka smażone 14 31800 545864 516625 2026-06-05T05:26:49Z Persino 2851 545864 wikitext text/x-wiki {{Kategoria|Desery}} m9hld9xmjq0tup2uzgpc3puqalp27c7 Kategoria:Lody i desery lodowe 14 31810 545862 529123 2026-06-05T05:24:50Z Persino 2851 545862 wikitext text/x-wiki {{Kategoria|Desery}} m9hld9xmjq0tup2uzgpc3puqalp27c7 Kategoria:Pasztety 14 41963 545866 289347 2026-06-05T05:32:22Z Persino 2851 545866 wikitext text/x-wiki {{Kategoria|Mięsa}} npytvd2d61m3b6tti1ojcjiprzekxoc Śpiewnik/Rota 0 54264 545897 447064 2026-06-05T08:04:53Z Persino 2851 /* Przypisy */ 545897 wikitext text/x-wiki [[File:Gdansk_Ratusz_Glownego_Miasta_carrilion.ogv|thumb|Melodia „Roty“ grana przez carillon gdańskiego ratusza. Nagranie z 2009 roku, CC-BY-SA Grzegorz Petka]] {| cellpadding="10px" | <span style="color:#0645AD; border: #0645AD solid; border-width: 0 0 3px 0; border-radius: 2px | border: transparent solid; border-width: 0 0 3px 0; border-radius: 2px;> Opis </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Muzyka|Muzyka]] </span> |} == Opis == [[File:Rota Konopnicka pocztówka przed 1916.jpg|thumb|Pocztówka z nutami i tekstem „Roty” oraz portretem Marii Konopnickiej. Wilno, przed 1916 r.]] Wiersz ''Rota'' napisała Maria Konopnicka podczas pobytu w Cieszynie w 1908 roku. Muzykę skomponował w 1910 roku Feliks Nowowiejski. Uroczyste wykonanie ''Roty'' przez chóry z trzech zaborów miało miejsce w Krakowie w 15 lipca 1910 roku, na 500-lecie zwycięstwa pod Grunwaldem. Przed odzyskaniem niepodległości uważano ''Rotę'' za nieoficjalny hymn narodowy<ref>https://bibliotekapiosenki.pl/utwory/Rota_(Nie_rzucim_ziemi_skad_nasz_rod)</ref>. W 1927 na podstawie ''Roty'' powstała pieśń kościelna, gdy redemptorysta o. Aleksander Piotrowski napisał do melodii Nowowiejskiego tekst zaczynający się od słów „Nie rzucim, Chryste, świątyń Twych”<ref>https://www.redemptor.pl/multimedia/90-roty-polskich-katolikow-autorstwa-o-aleksandra-piotrowskiego-cssr/</ref>. Pieśń często pojawia się w śpiewnikach harcerskich. 11 września 2010 roku na placu Matejki w Krakowie ''Rotę'' wykonało ponad 1500 chórzystów<ref>http://archiwum.bibliotekapiosenki.pl/static:rota1910</ref>. == Muzyka == '''Autor''': [[w:Feliks Nowowiejski|Feliks Nowowiejski]] (1877–1946).<br> <score raw = "1" vorbis = "1"> \version "2.12.3" \header { tagline = "" } \layout { indent = #0 } akordy = \chordmode { \set chordChanges = ##t a,2:m a,:m e, a,:m | a,:m a,:m c, g, c, c, a,:m a,:m | d,:m d,:m a,:m e, a,2:m a,:m e, a,:m | a,:m d,:m | d,:m d,:m e,2 e, a,:m e, | a,:m } global = { \autoBeamOff % \key g \minor \tempo 4 = 100 } melodia = { \global % es bes \relative g' { e4 a8 b c4 a | b gis a2 | e4 a8 b c4 d | e2 d | g,4 c8 d e4 d | c b a2 | a4 d8 e f4 d | c2 b | e,4 a8 b c4 a | b gis a2 | a4 a8 a d4 e | f1 | e2 e,4 d' | c2 b | a1 \fermata | } } tekst = \lyricmode { Nie rzu -- cim zie -- mi, skąd nasz ród, Nie da -- my po -- grześć mo -- wy! Pol -- ski my na -- ród, pol -- ski lud, Kró -- lew -- ski szczep Pia -- sto -- wy. Nie da -- my, by nas gnę -- bił wróg. Tak nam do -- po -- móż Bóg! Tak nam do -- po -- móż Bóg. } \score { << \new ChordNames { \akordy } \new Voice = "Air" { \melodia } \new Lyrics \lyricsto "Air" { \tekst } >> \midi {} \layout {} } </score> <!-- [[Plik:Rota_Akordy_01.svg]] [[Plik:Rota_Akordy_02.ogg]] --> <br> [[File:Rota Nowowiejski pocztówka przed 1920.jpg|thumb|Pocztówka z nutami i tekstem „Roty” oraz fotografią Feliksa Nowowiejskiego. Poznań, przed 1920 r. Na rewersie nadruk: „Czysty dochód przeznacza się na cele plebiscytu na Warmii”.]] [[File:Rota_Nowowiejski_zapis.jpg|thumb|Rękopis „Roty” ze zbiorów Biblioteki Jagiellońskiej.]] '''Źródło''': Melodia na podstawie {{Cytuj | autor= Feliks Nowowiejski | tytuł=Nowy śpiewnik polski : na chór mieszany (60 pieśni) | miejsce=Poznań | wydawca=nakł. Księgarni Św. Wojciecha | data=1924 | s=9–10 | url=https://crispa.uw.edu.pl/object/files/142171/display/Default }} Akordy: opracowanie własne ([[User:Ashaio|Ashaio]]). == Tekst == '''Autor''': [[w:Maria Konopnicka|Maria Konopnicka]] (1842–1910). <poem> Nie rzucim ziemi, skąd nasz ród, Nie damy pogrześć mowy! Polski my naród, polski lud, Królewski szczep piastowy, Nie damy, by nas zniemczył wróg… — Tak nam dopomóż Bóg! Do krwi ostatniej kropli z żył Bronić będziemy Ducha, Aż się rozpadnie w proch i w pył Krzyżacka zawierucha. Twierdzą nam będzie każdy próg… — Tak nam dopomóż Bóg! Nie będzie Niemiec pluł nam w twarz, Ni dzieci nam germanił. Orężny wstanie hufiec nasz, Duch będzie nam hetmanił, Pójdziem, gdy zabrzmi złoty róg… — Tak nam dopomóż Bóg! </poem> <br> '''Źródło''': {{Cytuj | autor= Maria Konopnicka | tytuł=Poezye wydanie zupełne, krytyczne tom VII | miejsce= Warszawa | wydawca=Gebethner i Wolff | data= 1915| s= [[s:Strona:PL Maria Konopnicka-Poezye T. 7 020.jpg|s. 10]] | url = https://pl.wikisource.org/wiki/Indeks:Poezye_T._7_(Maria_Konopnicka) }} == Przypisy == {{Przypisy}} gl7jpzwxtn81jyrtjk6teosfs2k41u1 Śpiewnik/Duma ukrainna 0 54277 545887 414069 2026-06-05T07:37:00Z Persino 2851 /* Przypisy */ 545887 wikitext text/x-wiki == Opis == [[File:Powiedz ty muzyko moia.jpg|thumb|Tekst pieśni ''Powiedz ty muzyko moia'' z książki ''Rzeczy rozmaite Adama Czahrowskiego z Czahrowa'' Adama Czahrowskiego (zm. ok. 1599), wydanej we Lwowie w 1599 roku. Skan ze zbiorów Biblioteki Narodowej (polona.pl).]] ''Duma ukrainna'' to jedna z dawniejszych polskich pieśni o tematyce rycersko-żołnierskiej, podobnie jak ''Pieśń o kole rycerskim'' oraz ''O żołnierzu tułaczu'' („Idzie żołnierz borem, lasem”). Tekst tej pieśni został po raz pierwszy wydrukowany w książce ''Rzeczy rozmaite Adama Czahrowskiego z Czahrowa'', wydanej we Lwowie w 1599 roku (wydanie pierwsze z 1597 roku nosi tytuł ''Threny i rzeczy rozmaite'' i pieśni tej nie zawiera). Pierwotna melodia nie zachowała się. Współcześnie ''Duma ukrainna'' śpiewana jest do melodii ludowej zanotowanej przez Juliusza Rogera do pieśni o żołnierzu tułaczu w dziele ''Pieśni ludu polskiego w Górnym Szląsku z muzyką'' z 1863 roku<ref>{{Cytuj | autor=Zygmunt Andrzejowski | tytuł= Wojenna pieśń polska | wolumin = 1, Pieśni rycerskie, żołnierskie i ludowo-żołnierskie z okresu Rzplitej dawnej (wiek XII-XVII) | miejsce=Warszawa | wydawca=Główna Księgarnia Wojskowa | data=1939 | s=43 }}</ref>. == Muzyka == '''Autor:''' nieznany <br> <score raw = "1" vorbis = "1"> \version "2.12.3" \header { tagline = "" } \layout { indent = #0 } akordy = \chordmode { \set chordChanges = ##t a,4:m a,:m a,:m | g, c, c, | c,4 c, c, c, d,:m d,:m d,:m d,:m | a,4:m a,:m a,:m | g, c,2 } global = { \autoBeamOff \key d \major \time 3/4 \tempo 4. = 50 } melodia = \transpose d c { \relative e' { \global b8 d d d d fis | e4 d r | \time 2/4 d8 fis fis fis | fis a a fis | g e e e | e fis g e | \time 3/4 fis e d d d fis | e4 d r | } } tekst = \lyricmode { Po -- wiedz, wdzię -- czna ko -- bzo mo -- ja, U -- mie li -- co du -- ma two -- ja? Cóż mo -- że być pię -- kniej -- sze -- go nad czło -- wie -- ka ry -- cer -- skie -- go? } \score { << \new ChordNames { \akordy } \new Voice = "Air" { \melodia } \new Lyrics \lyricsto "Air" { \tekst } >> \midi {} \layout {} } </score> <!-- [[Plik:Duma_ukrainna_Akordy_01.svg]] [[Plik:Duma_ukrainna_Akordy_02.ogg]] --> <br> '''Źródło''': {{Cytuj | autor= Juliusz Roger | tytuł=Pieśni ludu polskiego w Górnym Szląsku z muzyką | miejsce= Wrocław | wydawca= A. Hepner | data= 1880 | s=24–25 | url= https://www.sbc.org.pl/dlibra/show-content/publication/edition/6206?id=6206 }} Akordy: opracowanie własne ([[User:Ashaio|Ashaio]]). == Tekst == '''Autor''': [[w:Adam Czahrowski|Adam Czahrowski]] (ok. 1565 – po 1599) <poem> 1. Powiedz, wdzięczna kobzo moia, :Umie li co duma twoia. :Cóż może być pięknieyszego :Nad człowieka Rycerskiego? :2. Cóż nad Pograniczne kraie, ::Kędy skoro lód roztaie ::Ujźrzysz pola nieprzejźrzane, ::Młodą trawą przyodziane? 3. Ujźrzysz dąbrowy rozwite, :Ujźrzysz ptastwo rozmaite, :Zwierzu stada niezliczone :I Ryb roie niezłowione. :4. Gdzie czasem Wieśniak ochoczy ::Łowiąc sieci swoje toczy, ::Albo na straż wyprawiony ::Strzela źwierz Strzelec ćwiczony. 5. Lub przez niemienione progi :Dnieprowy Kozak ubogi :Czółnem płynie nie bez strachu, :Chudoiu żyw Sołomachu. :6. Usarz zasię w mocney zbroi ::Warownym obozem stoi, ::Który po szczupłym obiedzie ::Straż zarazem swą zawiedzie. 7. W tym próbuje w kole koni :Lub kopiią pierścień goni. :A kiedy zaś trwoga prziydzie, :Z trzaskiem z obozu wynidzie. :8. Pod świetnemi chorągwiami, ::Głośny trąbą y bębnami. ::Bieży pochylony lasem, ::Dla sławy, dla zysku czasem. 9. Tam młódź harce swoie zwodzi, :A zaś we krwi często brodzi, :Pałasz kładzie w poszwę krwawy, :Cedząc zaś krew za rękawy. :10. Drugiego też bystra strzała ::W sercu skrwawionym ostała. ::Trzeci końmi podeptany ::Polega czasem bez rany. 11. Za tym iedna przełomiona :Nazad ustępuie strona, :A zwyciężca niebłagany :W tył srogie zadaje rany. :12. A w tym do łupu zebrane ::Rycerstwo zaś spracowane ::Obraca się z trudu swego, ::Daiąc chwałę Bogu z tego, 13. Dziękuiąc czasem z wygrania, :A podczas też więc przegrania. :Na jakąż więc stronę stanie, :Bądź zawsze pochwalon, Panie. :14. Boże, który masz w swey pieczy ::Ludu Rycerskiego rzeczy, ::Chudy żołnierz prosi Ciebie, ::Odpłać mu tę nędzę w niebie. </poem> '''Źródło''': {{Cytuj | autor= Adam Czahrowski | tytuł= Rzeczy rozmaite Adama Czahrowskiego z Czahrowa [...] vczynione w taborzech i ziemi węgierskiej i horwackiej [...] począwszy od roku 1588 do roku 1596| wydanie=2 | miejsce=we Lwowie | wydawca= [Maciej Bernat]| data=1599 | s=L4v | url= https://polona.pl/item/rzeczy-rozmaite-adama-czahrowskiego-z-czahrowa-vczynione-w-taborzech-i-w-ziemi,NjkxNzMzNjI/91/#info:metadata}} == Przypisy == {{Przypisy}} 1wjvy9rcxy3md85bwgw0lf25vakn9st Śpiewnik/Idzie żołnierz borem, lasem 0 54302 545890 447066 2026-06-05T07:42:55Z Persino 2851 /* Przypisy */ 545890 wikitext text/x-wiki {| cellpadding="10px" | <span style="color:#0645AD; border: #0645AD solid; border-width: 0 0 3px 0; border-radius: 2px | border: transparent solid; border-width: 0 0 3px 0; border-radius: 2px;> Opis </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Muzyka|Muzyka]] </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Tekst|Tekst]] </span> |} == Opis == [[Plik:MWP 1830 Le réfugié polonais.jpg|thumb|Rycina przedstawiająca żołnierza-tułacza na obcej ziemi. Hippolytte Bellangé, przed 1866.]] ''Pieśń o żołnierzu tułaczu'' to jedna z dawniejszych polskich pieśni wojennych. Według niektórych wywodzi się z czasów bitwy pod Warną (1444 r.)<ref>{{Cytuj| autor = Żegota Pauli | tytuł = Pieśni ludu polskiego w Galicyi | miejsce = Lwów | wydawca = K. Jabłoński | data = 1838 | s = 66—67 | url = https://polona.pl/item/piesni-ludu-polskiego-w-galicyi,OTI4OTcxNjY/76/#info:metadata}}</ref><ref>{{Cytuj | autor=Zygmunt Andrzejowski | tytuł= Wojenna pieśń polska | opis = tom 1, Pieśni rycerskie, żołnierskie i ludowo-żołnierskie z okresu Rzeczypospolitej dawnej (wiek XII-XVII) | miejsce=Warszawa | wydawca=Główna Księgarnia Wojskowa | data=1939 | s=36}}</ref>. Prawdopodobnie powstała na podstawie pieśni wojskowych z końca XVI wieku: ''[[w:Pieśń o kole rycerskim|Pieśni o kole rycerskim]]'' (1584) i ''[[Śpiewnik/Duma ukrainna|Dumy rycerskiej]]'' (1597). Kojarzona z tradycją legionów i powstań narodowych, zdobyła znaczną popularność w XIX wieku. Mickiewicz nawiązał do niej w XII księdze ''Pana Tadeusza'', wplatając ją w koncert Jankiela<ref>{{Cytuj| autor= Adam Mickiewicz | tytuł = Pan Tadeusz czyli Ostatni zajazd na Litwie : historja szlachecka z r. 1811 i 1812, we dwunastu księgach, wierszem | wolumin = 2 | miejsce = Paryż | wydawca = Wydanie Alexandra Jełowickiego | data = 1834 | url = https://polona.pl/item/pan-tadeusz-czyli-ostatni-zajazd-na-litwie-historja-szlachecka-z-r-1811-i-1812-we,OTc2NTYxMzQ/280/#info:metadata | s = 281}}</ref>: <poem> Ledwie słuchacze mieli czas wyjść z zadziwienia, Znowu muzyka inna — znów, zrazu brzęczenia Lekkie i ciche, kilka cienkich strunek jęczy, Jak kilka much gdy z siatki wyrwą się pajęczéj. Lecz strun coraz przybywa, już rozpierzchłe tony Łączą się i akordów wiążą legijony, I już w takt postępują zgodzonemi dźwięki, Tworząc nutę żałosną téj sławnéj piosenki ::''O żołnierzu, tułaczu, który borem, lasem'' ::''Idzie, z biedy i z głodu przymierając czasem,'' ::''Na koniec pada u nóg konika wiernego,'' ::''A konik nogą grzebie mogiłę dla niego''. Piosenka stara, wojsku polskiemu tak miła! Poznali ją żołnierze, wiara się skupiła W koło mistrza; słuchają, wspominają sobie, Ów czas okropny, kiedy na Ojczyzny grobie Zanucili tę piosnkę i poszli w kraj świata; Przywodzą na myśl długie swéj wędrówki lata, Po lądach, morzach, piaskach gorących i mrozie, Pośrodku obcych ludów, gdzie często w obozie Cieszył ich i rozrzewniał ten śpiew narodowy. Tak rozmyślając smutnie pochylili głowy! </poem> Do pieśni nawiązywał także Żeromski m.in. w tytułach swoich opowiadań (''O żołnierzu tułaczu'', ''Rozdziobią nas kruki, wrony'') i w treści powieści ''Popioły''. == Muzyka == '''Autor''': nieznany <br> <score raw = "1" vorbis = "1"> \version "2.12.3" \header { tagline = "" } \layout { indent = #0 } akordy = \chordmode { \set chordChanges = ##t a,2.:m | e,4:m e,:m | d,4:m a,:m | d,:m g, | d,4:m a,2:m | d,4:m a,:m | } global = { \autoBeamOff \tempo 4 = 80 \time 3/4 } melodia = \relative e' { \global \transpose f a { \relative a' { f8 f c'4. f,8 | \time 2/4 c'8 c es c | bes bes c f, | as as bes g | \time 3/4 bes des c4. f,8 | \tuplet 3/2 { bes8[ as] g8 } f4 f \bar "|." } } } tekst = \lyricmode { I -- dzie żoł -- nierz bo -- rem, la -- sem, bo -- rem, la -- sem, Przy -- mie -- ra -- jąc z_gło -- du cza -- sem, z_gło -- du cza -- sem. } \score { << \new ChordNames { \akordy } \new Voice = "Air" { \melodia } \new Lyrics \lyricsto "Air" { \tekst } >> \midi {} \layout {} } </score> <!-- [[File:Idzie Zołnierz Akordy 01.svg]] [[File:Idzie Zołnierz Akordy 02.ogg]] --> <br> '''Źródło''': Melodia na podstawie {{Cytuj | autor= Zygmunt Gloger | tytuł= Pieśni ludu | miejsce= Warszawa | wydawca= Gebethner i Wolff | data= 1892 | s= 181–183 | url=https://www.sbc.org.pl/dlibra/show-content/publication/edition/10942?id=10942 }} Akordy: opracowanie własne ([[User:Ashaio|Ashaio]]). == Tekst == '''Autor''': nieznany {{Kolumny|3| <poem> 1. Idzie żołnierz borem, lasem, :Przymierając [z] głodu czasem. ::Suknia na nim oblatuje<ref>W starszych wersjach „nie blakuje”, tj. nie płowieje.</ref>, ::Wiatr dziurami przelatuje. 2. Chociaż żołnierz obszarpany, :Przecie stoi między pany. ::Trzeba by go obdarować, ::Chleba,soli nie żałować. 3. W kotły, bębny uderzyli, :Na wojenkę zatrąbili. ::Starsza siostra usłyszała, ::Konia bratu osiodłała. 4. Młodsza miecz mu przypasała, :Sama rzewnie zapłakała. ::Nie płacz, nie płacz siostro brata, ::Powrócę ja za trzy lata. 5. Nie wyszło roku, półtora, :Wojownicy jadą z pola. ::Witam, witam, mospanowie, ::Daleko tam brat na wojnie? 6. Leży w polu na Podolu, :Prawą nóżkę ma w strzemieniu. ::Konik jego, wedle niego ::Grzebie nóżką, żałuje go. 7. I wygrzebał po kolana :Żałujący swego pana. ::Wstawaj panie młodziusieńki, ::Ja twój konik wierniusieńki. 8. Póki pan mój na mnie siadał :Tom ja gołe ziarna jadał. ::Teraz nie mam sieczki, słomy, ::Rozniosą<ref>W innych wersjach: „rozdziobią” lub „rozdzióbią”.</ref> mnie kruki, wrony. 9. Siostra wszystko wysłuchała, :Potem rzewnie zapłakała. </poem> }} <br> '''Źródło''': {{Cytuj | autor= Zygmunt Gloger | tytuł= Pieśni ludu | miejsce= Warszawa | wydawca= Gebethner i Wolff | data= 1892 | s= 183–184 | url=https://www.sbc.org.pl/dlibra/show-content/publication/edition/10942?id=10942 }} == Przypisy == {{Przypisy}} == Zobacz też == {{Wikipedia|Pieśń o żołnierzu tułaczu}} {{Wikiźródła|Idzie żołnierz borem lasem}} * Opis i tekst ''[https://bibliotekapiosenki.pl/utwory/Idzie_zolnierz_borem_lasem Idzie żołnierz borem, lasem]'' w serwisie [https://bibliotekapiosenki.pl/ Biblioteka Piosenki]. * Tekst ''[https://wolnelektury.pl/katalog/lektura/idzie-zolnierz-borem-lasem.html Idzie żołnierz borem, lasem]'' w serwisie [https://wolnelektury.pl/ Wolne Lektury]. * Tekst i nagranie ''[https://www.spiewnikniepodleglosci.pl/teksty/tekst-utworu-idzie-zolnierz-borem-lasem/ Idzie żołnierz borem, lasem]'' w serwisie [https://www.spiewnikniepodleglosci.pl/ Śpiewnik Niepodległości]. * Warianty tekstu i melodii w serwisie [http://antologia.oskarkolberg.pl/ Antologia polskich pieśni] [http://oskarkolberg.pl/ Instytutu im. Oksara Kolberga]: ** ''Idzie żołnierz borem, lasem'' [http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7550], [http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7551] ,[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7426], [http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7380], [http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7388], [http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7390], [http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=8425] ** ''Idzie żołnierz górą, lasem'' [http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7389], [http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=8438] ** ''Pod Kamieńcem, pod Podolskim'' [http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=9047] gzho5sqqchzmhfwaopajj177eo8pam8 Śpiewnik/Anioł pasterzom mówił 0 54307 545882 403018 2026-06-05T07:26:51Z Persino 2851 /* Przypisy */ 545882 wikitext text/x-wiki {| cellpadding="10px" | <span style="color:#0645AD; border: #0645AD solid; border-width: 0 0 3px 0; border-radius: 2px | border: transparent solid; border-width: 0 0 3px 0; border-radius: 2px;> Opis </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Muzyka|Muzyka]] </span> |} [[Plik:Anioł pasterzom mówił.wav|thumb|250px|'''''Anioł pasterzom mówił''''' w wykonaniu '''[[:commons:File:Anioł pasterzom mówił.wav|artystów Studia Accantus]]'''. Śpiewają '''Sylwia Banasik''' i '''Kuba Jurzyk'''; aranżacja muzyczna: '''Marcin Kuczewski'''; reżyseria, realizacja i edycja nagrań: '''Bartłomiej Kozielski - Studio Accantus'''; miks i mastering: '''Bartłomiej Kozielski, Marcin Kuczewski'''; autorzy muzyki i słów nieznani. ©: '''Stowarzyszenie Wikimedia Polska'''. Zezwala się na korzystanie z utworu na warunkach licencji '''Creative Commons Uznanie autorstwa 3.0 PL''', dostępnej pod adresem https://creativecommons.org/licenses/by/3.0/pl/]] == Muzyka == '''Autor''': nieznany (najstarszy zapis melodii – XVII wiek) <!-- <score raw = "1" vorbis = "1"> \version "2.12.3" \header { tagline = "" } \layout { indent = #0 } akordy = \chordmode { \set chordChanges = ##t g,2 c, | d, e,:m | g, c, | a,:m d, | g, c, | g, c, g, d, | g, c, g, d, | g, g, d, g, } global = { \autoBeamOff % \key g \minor \tempo 4 = 100 } melodia = { \global \relative g' { \key g \major g4 g a a | b a g2 | d'4 d e e | d cis d2 | d4 d e2 | d4 d c c | b b a2 | d4 d c c | b b a2 | d2 b4 c | b a g2 \fermata | } } tekst = \lyricmode { A -- nioł pa -- ste -- rzom mó -- wił: Chry -- stus się wam na -- ro -- dził, W_Be -- tle -- em, nie -- bar -- dzo po -- dłem mie -- ście, Na -- ro -- dził się w_u -- bó -- stwie, Pan wsze -- go stwo -- rze -- nia. } \score { << \new ChordNames { \akordy } \new Voice = "Air" { \melodia } \new Lyrics \lyricsto "Air" { \tekst } >> \midi {} \layout {} } </score> --> <br> [[Plik:Anioł_pasterzom_Akordy_01.svg]] [[Plik:Anioł_pasterzom_Akordy_02.ogg]] <br> '''Źródło''': Melodia na postawie {{Cytuj | autor= Zygmunt Gloger | tytuł= Pieśni ludu | miejsce= Warszawa | wydawca= Gebethner i Wolff | data= 1892 | s=41–42 | url= https://www.sbc.org.pl/dlibra/show-content/publication/edition/10942?id=10942}} Akordy: opracowanie własne ([[User:Ashaio|Ashaio]]). == Tekst == '''Autor''': nieznany (najstarszy zapis tekstu polskiego – XVI wiek) {{Kolumny|3| <poem> 1. Anioł pasterzom mówił: Chrystus się wam narodził ::W Betleem nie bardzo podłem mieście, ::Narodził się w ubóstwie, ::::::Pan wszego stworzenia. 2. Chcąc się tego dowiedzieć<ref>Współcześnie częściej śpiewa się: ''Chcąc się dowiedzieć tego'' (patrz załączone nagranie).</ref> Poselstwa wesołego, ::Bieżeli do Betleem skwapliwie, ::Znaleźli Dziecię w żłobie, ::::::Maryję z Józefem. 3. Jaki Pan chwały wielkiej! Uniżył się z wysokiej, ::Pałacu kosztownego żadnego, ::Nie miał zbudowanego, ::::::Pan wszego stworzenia. 4. O dziwne narodzenie! Nigdy nie wysłowione, ::Poczęła Panna Syna w czystości, ::Porodziła w całości, ::::::Panieństwa swojego. 5. Już się ono spełniło, Co pod figurą było: ::Aaronowa różdżka zielona ::Stała się nam kwitnąca ::::::I owoc rodząca. 6. Słuchajcież Boga Ojca, Jako go wam zaleca: ::Tenci jest Syn najmilszy jedyny, ::Wam w Raju obiecany, ::::::Tego wy słuchajcie. 7. Bogu bądź cześć i chwała, Któraby nie ustała; ::Jak Ojcu, tak i jego Synowi, ::I świętemu Duchowi, ::::::W Trójcy jedynemu. </poem> }} <br> '''Źródło''': {{Cytuj | autor= Michał M. Mioduszewski| tytuł= Śpiewnik kościelny | miejsce=Kraków | wydawca=Stanisław Gieszkowski | data=1838 | s= 28–29 | url= https://pl.wikisource.org/wiki/Indeks:%C5%9Apiewnik_(Mioduszewski) }} (Pisownia częściowo uwspółcześniona). == Przypisy == {{Przypisy}} == Zobacz też == {{Wikipedia|Anioł pasterzom mówił}} {{Wikiźródła|Anioł pasterzom mówił}} {{Projekt siostrzany | projekt = commons | tekst = [[w:Wikimedia Commons|Wikimedia Commons]] ma listę nagrań '''[[commons:Polish Christmas carols|polskich kolęd]]''' na wolnych licencjach}} * Tekst [https://wolnelektury.pl/katalog/lektura/aniol-pasterzom-mowil.html Anioł pasterzom mówił] w serwisie [https://wolnelektury.pl Wolne Lektury] * Kategoria [http://spiewniksiedleckiego.pl/?page_id=252 Pieśni na Boże Narodzenie] w serwisie [http://spiewniksiedleckiego.pl Śpiewnik Siedleckiego] n4lj2n39nyhgejnm6l75ls4oq1kk437 Kategoria:Pizze 14 55097 545876 525248 2026-06-05T05:58:32Z Persino 2851 545876 wikitext text/x-wiki {{Plik|plik=Eq it-na pizza-margherita sep2005 sml.jpg|ramka=mały|opis=Pizza}} {{wikipedia|Pizza}} {{commonscat|Pizzas|Pizza}} {{Kategoria|Kuchnia włoska}} 84xp6ypu6g2xyoj9gnxi2khc1xzkovt 545877 545876 2026-06-05T05:58:56Z Persino 2851 545877 wikitext text/x-wiki {{Plik|plik=Eq it-na pizza-margherita sep2005 sml.jpg|pozycja=prawo|ramka=mały|opis=Pizza}} {{wikipedia|Pizza}} {{commonscat|Pizzas|Pizza}} {{Kategoria|Kuchnia włoska}} k0jlaoebvbq23pi6r4b570vuyhdvtb7 Śpiewnik/Ty pójdziesz górą 0 55223 545901 494129 2026-06-05T08:16:34Z Persino 2851 /* Przypisy */ 545901 wikitext text/x-wiki {| cellpadding="10px" | <span style="color:#0645AD; border: #0645AD solid; border-width: 0 0 3px 0; border-radius: 2px | border: transparent solid; border-width: 0 0 3px 0; border-radius: 2px;> Opis </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Muzyka|Muzyka]] </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Tekst|Tekst]] </span> |} == Opis == Niezwykle popularna piosenka o nieszczęśliwej miłości, powstała prawdopodobnie w Galicji w XVIII wieku<ref name="Wacholc">{{Cytuj | autor= Maria Wacholc | tytuł= Śpiewnik polski | miejsce= Kraków | wydawca= Impuls | data= 2012 | s= 33 | isbn= 9788378501411}}</ref>. Na podobną melodię śpiewano kolędę ''[[s:Śpiewnik kościelny/Nowy rok bieży|Nowy rok bieży]]'', opublikowaną przez ks. Michała M. Mioduszewskiego w ''[[s:Śpiewnik kościelny|Śpiewniku kościelnym]]'' wydanym w 1838 r. W XIX wieku pieśń ta była rozpowszechniona w różnych regionach (Oskar Kolberg w ''Pieśniach ludu polskiego'' przytacza 13 różnych wersji<ref name="Kolberg">{{Cytuj | autor= Oskar Kolberg | tytuł= Pieśni ludu polskiego : serya I | miejsce= Warszawa| wydawca= w drukarni J. Jaworskiego | data= 1857| url=https://polona.pl/item/piesni-ludu-polskiego-serya-i-zebral-i-wydal-oskar-kolberg,MTA5MjczODA/8/#info:metadata | s=3–12}}</ref>) i śpiewana przez różne warstwy społeczne. Występowała m. in. pod tytułami ''Szlachcic i dziewczyna'', ''Pożegnanie'', ''Ty pójdziesz górą'', ''Wezmę ja żupan'', ''Oblekę kontusz'', ''Wezmę ja mundur''<ref name="Wacholc"/>, natomiast wersja ludowa zaczynała się od słów „Wezmę kapotę, czapkę z baranem, siekierkę przypaszę“<ref>{{Cytuj | autor= Oskar Kolberg | tytuł= Pieśni ludu polskiego : serya I | miejsce= Warszawa| wydawca= w drukarni J. Jaworskiego | data= 1857| url=https://polona.pl/item/piesni-ludu-polskiego-serya-i-zebral-i-wydal-oskar-kolberg,MTA5MjczODA/8/#info:metadata | s=4}}</ref>. Eliza Orzeszkowa wykorzystała fragmenty tej piosenki w powieściach ''[[s:Nad Niemnem (wyd. 1938)/Całość|Nad Niemnem]]'' i ''[[s:Australczyk/całość|Australczyk]]''. == Muzyka == '''Autor''' nieznany – melodia ludowa.<br> <!-- <score raw = "1" vorbis = "1"> \version "2.12.3" \header { tagline = "" } \layout { indent = #0 } akordy = \chordmode { \set chordChanges = ##t a,1*3/4:m c, a,:m c, a, d,:m a,:m a,:m } global = { \autoBeamOff \key g \minor \time 3/4 \tempo 4. = 80 } melodia = \transpose g a { \relative e' { \global g4 bes8 a g fis | g4 bes8 a g fis | g8 a bes4 c | d2. | d8 d es d c b | c c d c bes a | g8 bes d4 fis, | g2 r4 | } } tekst = \lyricmode { Ty pój -- dziesz gó -- rą, ty pój -- dziesz gó -- rą, a ja do -- li -- ną, Ty za -- kwi -- tniesz ró -- żą, ty -- za -- kwi -- tniesz ró -- żą, a ja ka -- li -- ną. % Wez -- mę ja kon -- tusz, wez -- mę ja żu -- pan, sza -- blę przy -- pa -- szę, % Pój -- dę do dzie -- wczy -- ny, pój -- dę do je -- dy -- nej, to się u -- cie -- szę. } \score { << \new ChordNames { \akordy } \new Voice = "Air" { \melodia } \new Lyrics \lyricsto "Air" { \tekst } >> \midi {} \layout {} } </score> --> [[Plik:Ty_pójdziesz_górą_Akordy.svg]] [[Plik:Ty_pójdziesz_górą_Akordy.ogg]] <br> '''Źródło''': melodia na podstawie {{Cytuj | autor= Zygmunt Gloger| tytuł= Pieśni ludu| miejsce=Warszawa | wydawca=Gebethner i Wolff | data= 1892 | url=https://www.sbc.org.pl/dlibra/show-content/publication/edition/10942?id=10942 | s=190}} (transponowana z tonacji g-moll do a-moll). Akordy: opracowanie własne ([[User:Ashaio|Ashaio]]). == Tekst == '''Autor''' nieznany – pieśń szlachecka i ludowa, występująca w licznych wariantach. <br> {{Kolumny|3| <poem><br> 1. Wezmę ja kontusz, wezmę ja kontusz, ::Szablę przypaszę, Pójdę do dziewczyny, pójdę do jedynej, ::To się ucieszę. 2. Przyjechał do niej, przyjechał do niej, ::Puknął w okienko: Wyjdźże dziewczyno, wyjdźże jedyna, ::Wyjdźże panienko. 3. Wyszła dziewczyna, wyszła jedyna, ::Jako róży kwiat, Oczki zapłakała, rączki załamała, ::Zmienił jej się świat. <br><br> 4. Czego ty płaczesz, czego lamentujesz, ::Dziewczyno moja? Jak nie mam płakać, nie mam lamentować, ::Nie będę twoja! 5. Będziesz dziewczyno, będziesz jedyna, ::Będziesz dalibóg! Ludzie mi cię rają, rodzice oddają ::I sam sądzi Bóg. 6. Ty pójdziesz górą, ty pójdziesz górą, ::A ja doliną, Ty zakwitniesz różą, ty zakwitniesz różą, ::A ja kaliną. 7. Ty pójdziesz drogą, ty pójdziesz drogą, ::A ja lasami, Ty umyjesz wodą, ty umyjesz wodą, ::A ja łezkami. <br><br> 8. Ty będziesz panną, ty będziesz panną, ::Przy wielkim dworze, Ja będę księdzem, ja będę księdzem ::W białym klasztorze. 9. A jak pomrzemy, a jak pomrzemy, ::Każemy sobie Złote litery, złote litery ::Wybić na grobie. 10. A kto tam przyjdzie, a kto tam przyjdzie, ::Przeczyta sobie, Złączona miłość, złączona miłość ::Leży w tym grobie. <br><br><br></poem> }} <br> '''Źródło''': {{Cytuj | autor= Zygmunt Gloger| tytuł= Pieśni ludu| miejsce=Warszawa | wydawca=Gebethner i Wolff | data= 1892 | url=https://www.sbc.org.pl/dlibra/show-content/publication/edition/10942?id=10942 | s=192}} == Zobacz też == {{Wikipedia|Ty pójdziesz górą}} {{Wikisource|Kontusz oblekę}} {{Wikisource|Wyszła dziewczyna}} * ''[https://bibliotekapiosenki.pl/utwory/Ty_pojdziesz_gora Ty pójdziesz górą]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Biblioteka Piosenki] * ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7917 Wezmę ja kontusz]'' w serwisie [http://antologia.oskarkolberg.pl/ Antologia polskich pieśni] [http://www.oskarkolberg.pl/ Instytutu im. Oskara Kolberga] * ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7922 Wezmę ja żupan]'' w serwisie [http://antologia.oskarkolberg.pl/ Antologia polskich pieśni] [http://www.oskarkolberg.pl/ Instytutu im. Oskara Kolberga] * ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7918 Wyszła dziewczyna]'' w serwisie [http://antologia.oskarkolberg.pl/ Antologia polskich pieśni] [http://www.oskarkolberg.pl/ Instytutu im. Oskara Kolberga] * ''[https://www.spiewnikniepodleglosci.pl/teksty/tekst-utworu-pozegnanie/ Pożegnanie]'' w serwisie [https://www.spiewnikniepodleglosci.pl Śpiewnik Niepodległości] * ''[https://staremelodie.pl/piosenka/3950/Zlaczona_milosc Złączona miłość]'' w serwisie [https://staremelodie.pl/ Stare Melodie] * ''[https://staremelodie.pl/piosenka/5109/Kontusz_obleke_szable_przypasze Kontusz oblekę, szablę przypaszę]'' w serwisie [https://staremelodie.pl/ Stare Melodie] == Przypisy == {{Przypisy}} cyrjk3ncnk8nuy7gdfxwiixj6v9c6zb Śpiewnik/Jeszcze jeden mazur dzisiaj 0 56087 545891 447068 2026-06-05T07:44:17Z Persino 2851 /* Przypisy */ 545891 wikitext text/x-wiki == Muzyka == '''Autor:''' nieznany / Fabian Tymolski<ref>https://bibliotekapiosenki.pl/utwory/Ostatni_mazur</ref> lub Tymulski<ref>https://www.niedziela.pl/wydruk/87638/nd</ref><br> '''Aranżacja''': Franciszek Barański (ur. 1855).<br> <score raw="1" vorbis="1"> \version "2.20.0" \header{ title = "Jeszcze jeden mazur dzisiaj" poet = "Słowa: Ludwik K. Łubieński" composer = "Muzyka: autor nieznany / Fabian Tymolski" arranger = "Aranżacja: Franciszek Barański (ur. 1855)" tagline = "" } \score { \new PianoStaff{ << \new Staff="RH" \relative c'{ \clef treble \key f \major \time 3/4 \tempo 4=160 \autoBeamOff d4. e8 f g | a8. f16 d4 f | e8. a16 e4 a | d, <f a>2 | d4. e8 f g | a8. f16 d4 f | e8. a16 e4 a | d, d r | c4. e8 g bes | <bes d>8. <a c>16 <g b>4 <a c> | <c e>4. \fermata <bes d>8 <g bes> <e g> | <g bes>4 <f a>2 | d4. e8 f g | a8. f16 d4 f | e8. a16 e4 a | d, d r | d4. e8 f g | a8. f16 d4 f | e8. a16 e4 a | d, <f a d>\arpeggio r | } \addlyrics { \small { Je -- szcze je -- den ma -- zur dzi -- siaj, Nim po -- ra -- nek świ -- ta, Czy po -- zwo -- li pan -- na Krzy -- sia, Mło -- dy u -- łan py -- ta. I tak dłu -- go py -- ta, pro -- si, Boć to w_po -- lskiej zie -- mi, W_pie -- rwszą pa -- rę ją u -- no -- si, A sto par za nie -- mi, W_pie -- rwszą pa -- rę ją u -- no -- si, A sto par za nie -- mi. } } \new Staff="LH"{ \clef bass \key f \major \time 3/4 \tempo 4=160 d,4 <f a> <f a> | d, <f a> <f a> | a, <e g a> <e g a> | d, <f a>2 | d,4 <f a> <f a> | d, <f a> <f a> | a, <e g a> <e g a> | d, <f a> r | c4 <e g bes> <e g bes> | f, <f a> <f a> | c <g bes c'> <g bes c'> | f, <c f a>2 | d,4 <f a> <f a> | d, <f a> <f a> | a, <e g a> <e g a> | d, <f a> r | d,4 <f a> <f a> | d, <f a> <f a> | a, <e g a> <e g a> | d, <f a> r | } >> } \layout{} \midi{} } </score> <!-- [[Plik:ostatni_mazur.svg]] [[Plik:ostatni_mazur.midi]] --> '''Źródło''': {{Cytuj | autor= Franciszek Barański | tytuł= Jeszcze Polska nie zginęła : pieśni patryotyczne i narodowe | miejsce= Lwów | wydawca= nakładem Księgarni Polskiej B. Połonieckiego | data= ok. 1918 | url = https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 | s= 148 }} == Tekst == '''Autor''': [[w:Ludwik Ksawery Łubieński|Ludwik Ksawery Łubieński]] (1839–1893). {{Kolumny|3| <poem> Jeszcze jeden mazur dzisiaj, Nim poranek świta, Czy pozwoli panna Krzysia, Młody ułan pyta. ::I tak długo pyta, prosi, ::Boć to w polskiej ziemi, ::W pierwszą parę ją unosi, ::A sto par za niemi. On [jej] czule szepce w uszko Ostrogami dzwoni, W pannie tłucze się serduszko I liczko się płoni. ::Cyt serduszko, nie płoń liczka, ::Bo ułan niestały! ::O pół mili wre potyczka, ::Słychać pierwsze strzały. Słychać strzały, głos pobudki, Dalej na koń! Hurra! Lube dziewczę, porzuć smutki, Zatańczym mazura! ::Jeszcze jeden raz dokoła, ::Jeden uścisk bratni! ::Trąbka budzi, na koń woła – ::Mazur to ostatni!</poem> }} '''Źródło''': {{Cytuj | autor= Franciszek Barański | tytuł= Jeszcze Polska nie zginęła : pieśni patryotyczne i narodowe | miejsce= Lwów | wydawca= nakładem Księgarni Polskiej B. Połonieckiego | data= ok. 1918 | url = https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 | s= 98 }} == Przypisy == {{Przypisy}} == Zobacz też == {{Wikiźródła|Ostatni mazur}} {{Wikiźródła|Jeszcze jeden mazur dzisia}} * ''[https://bibliotekapiosenki.pl/utwory/Ostatni_mazur Ostatni mazur]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] 9rwwz84vjnf2niooehacijt86yaiy72 Śpiewnik/Upływa szybko życie 0 56090 545903 460346 2026-06-05T08:19:40Z Persino 2851 /* Przypisy */ 545903 wikitext text/x-wiki <!-- {| cellpadding="10px" | <span style="color:#0645AD; border: #0645AD solid; border-width: 0 0 3px 0; border-radius: 2px | border: transparent solid; border-width: 0 0 3px 0; border-radius: 2px;> Opis </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Muzyka|Muzyka]] </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Tekst|Tekst]] </span> |} --> == Opis == Piosenka powstała w 1877 roku. Napisana została przez księdza Franciszka Leśniaka, katechetę w gimnazjum w Starym Sączu, na zakończenie roku szkolnego<ref>{{Cytuj| autor = Maria Wacholc | tytuł = Śpiewnik polski | miejsce = Kraków | wydawca = Impuls | data = 2012 | s = 131}} </ref>. Piosenka zdobyła popularność w całym kraju; podczas I wojny światowej śpiewano ją w Legionach, później także w harcerstwie. Autorem melodii może być Stefan Surzyński (1855–1919)<ref>{{Cytuj | autor = Zbigniew Adrjański | tytuł = Złota księga pieśni polskich : pieśni, gawędy, opowieści | miejsce = Warszawa | wydawca = Bellona | data = 2011 | s = 367}}</ref>. Adaptacje tej piosenki (wraz z dodatkowymi zwrotkami) nagrali m.in. Halina Kunicka, Maryla Rodowicz, Krzysztof Krawczyk oraz Stanisław Soyka. == Muzyka == '''Autor''': ks. Franciszek Leśniak (1846–1915) (?) [[File:Upływa spiesznie życie.png]] [[File:Upływa spiesznie życie.midi]] '''Źródło''': {{Cytuj| tytuł = Lirenka : wieniec pieśni na uroczystość wiosenną dziatwy : w układzie na 1 i 2 głosy | url = https://polona.pl/item/lirenka-wieniec-piesni-na-uroczystosc-wiosenna-dziatwy-w-ukladzie-na-1-i-2-glosy,OTIyOTA2Njc/25/#info:metadata | miejsce = Lwów | wydawca = Wydawnictwo Książek Szkolnych | data = [ok. 1930] }} == Tekst == '''Autor''': ks. Franciszek Leśniak (1846–1915) {{Kolumny|2| <poem> 1. Upływa spiesznie życie, Jak potok płynie czas. Za rok, za dzień, za chwilę Razem nie będzie nas. 2. I młode lata nasze Upłyną prędko w dal, A w sercu pozostanie Tęsknota, smutek, żal. 3. O, jeszcze młodość nasza, Jakże szczęśliwi my, O, niech przynajmniej teraz Nie płyną gorzkie łzy. 4. Już nadszedł koniec szkoły; Nam u rozstajnych dróg Idącym w świat z otuchą Niech błogosławi Bóg!</poem> }} '''Źródło''': {{Cytuj| tytuł = Lirenka : wieniec pieśni na uroczystość wiosenną dziatwy : w układzie na 1 i 2 głosy | url = https://polona.pl/item/lirenka-wieniec-piesni-na-uroczystosc-wiosenna-dziatwy-w-ukladzie-na-1-i-2-glosy,OTIyOTA2Njc/25/#info:metadata | miejsce = Lwów | wydawca = Wydawnictwo Książek Szkolnych | data = [ok. 1930] }} == Zobacz też == {{Wikiźródła|Koniec roku}} * [https://bibliotekapiosenki.pl/utwory/Uplywa_szybko_zycie Upływa szybko życie] w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] * [https://staremelodie.pl/piosenka/2985/Uplywa_szybko_zycie Upływa szybko życie] w serwisie [https://staremelodie.pl Stare Melodie] == Przypisy == {{Przypisy}} f0eq6zwg1o9erofakoyexlecias0yqs Śpiewnik/Indeks tematyczny 0 56092 545860 544009 2026-06-04T21:13:44Z Ashaio 4702 +4 545860 wikitext text/x-wiki <noinclude>__NOTOC__{{ProstaStronaStart}}{{Div start|klasa=siatka-mobilna}}</noinclude> Poniższe grupy nie są rozłączne (piosenka może należeć do więcej niż jednej kategorii). {{Tabela|atrybuty=cellspacing="10" width="100%"|liczba wierszy=10|liczba kolumn=2 |bez pionu 1_1=tak|opcje 1_1=width="50%" |bez pionu 1_2=tak|opcje 1_2=width="50%" |komórka 1_1={{Pudełko komórkowe 1|tytuł= Pieśni patriotyczne |grafika= |tekst= * {{sr|Bogurodzica}} * {{sr|Boże, coś Polskę}} * {{sr|Czarna sukienka}} * {{sr|Cześć polskiej ziemi, cześć}} * {{sr|Cztery rzeczy w Polsce słyną}} * {{sr|Leci liście z drzewa}} * {{sr|Mazurek Dąbrowskiego}} * {{sr|O Matko Polko}} * {{sr|Rota}} * {{sr|Święta miłości kochanej ojczyzny}} * {{sr|Witaj majowa jutrzenko}} }} |komórka 1_2={{Pudełko komórkowe 3|tytuł= Piosenki wojskowe |grafika= |tekst=* {{sr|Bartoszu, Bartoszu}} * {{sr|Bywaj dziewczę zdrowe}} * {{sr|Duma ukrainna}} * {{sr|Idzie żołnierz borem, lasem}} * {{sr|Jak to na wojence ładnie}} * {{sr|Jeszcze jeden mazur dzisiaj}} * {{sr|O mój rozmarynie}} * {{sr|Tam na błoniu błyszczy kwiecie}} * {{sr|W krwawem polu srebrne ptaszę}} * {{sr|Wojenko, wojenko}} * {{sr|Za Niemen het precz}} }} |komórka 2_1={{Pudełko komórkowe 2 |tytuł= Pieśni nabożne |grafika= |tekst= {{Wikiźródła|Śpiewnik kościelny}} * {{sr|Boże wieczny, Boże żywy}} * {{sr|Gaude mater}} * {{sr|Kto się w opiekę}} * {{sr|Ojcze z niebios Boże Panie}} * {{sr|Pieśń poranna}} * {{sr|Pieśń wieczorna}} * {{sr|Potężny Boże}} * {{sr|Serdeczna Matko}} * {{sr|Spuśćcie nam na ziemskie niwy}} * {{sr|Veni Creator}} * {{sr|Wesoły nam dziś dzień nastał}} * {{sr|Zdrowaś bądź Maryja}} }} |komórka 2_2={{Pudełko komórkowe 4|tytuł= Kolędy |grafika= |tekst={{Wikiźródła|Wikitomik:Kancjonał bożonarodzeniowy... przez Wikiskrybów zebrany|Kancjonał bożonarodzeniowy}} * {{sr|Anioł pasterzom mówił}} * {{sr|Bóg się rodzi}} * {{sr|Cicha noc}} * {{sr|Dzisiaj w Betlejem}} * {{sr|Gdy się Chrystus rodzi}} * {{sr|Lulajże, Jezuniu}} * {{sr|Mizerna, cicha}} * {{sr|O, gwiazdeczko, coś świeciła}} * {{sr|Przybieżeli do Betlejem}} * {{sr|W żłobie leży}} * {{sr|Witaj gwiazdko złota}} }} |komórka 3_1={{Pudełko komórkowe 1|tytuł= Piosenki i melodie ludowe |grafika= |tekst=* {{sr|Choćbym ja jeździł we dnie i w nocy}} * {{sr|Czerwone jabłuszko}} * {{sr|Hej, z góry, z góry jadą Mazury}} * {{sr|Leć głosie po rosie, po niskiej leszczynie}} * {{sr|Leć głosie po rosie, prosto ku laskowi }} * {{sr|Oj, chmielu, chmielu}} * {{sr|Oj ty horo kamennaja}} * {{sr|Piękna nasza Polska cała}} * {{sr|Płynie Wisła, płynie}} * {{sr|Szła dzieweczka}} * {{sr|Umarł Maciek, umarł}} * {{sr|W murowanej piwnicy}} * {{sr|W polu lipeńka}} * {{sr|Zakochali się}} }} |komórka 3_2={{Pudełko komórkowe 3|tytuł= Piosenki dla dzieci |grafika= |tekst= {{Wikiźródła|Śpiewnik dla dzieci}} * {{sr|Jesienią}} * {{sr|Kukułeczka}} * {{sr|Ogródek}} * {{sr|Sokół}} * {{sr|Śnieżyca}} * {{sr|Taniec}} * {{sr|W polu}} * {{sr|Zajączek}} * {{sr|Zła zima}} '''Kołysanki:''' * {{sr|Aaa, kotki dwa}} * {{sr|Kołysanka Brahmsa }} * {{sr|Kołyszże się, kołysz}} * {{sr|Uśnijże mi, uśnij}} }} |komórka 4_1={{Pudełko komórkowe 2 |tytuł= Piosenki o miłości |grafika= |tekst=* {{sr|Dalibóg, że powiem mamie}} * {{sr|Laura i Filon}} * {{sr|Marzenie o grajku }} * {{sr|Panicz i dziewczyna }} * {{sr|Serce nie sługa}} * {{sr|Śliczne gwoździki, piękne tulipany}} * {{sr|Staropolskie zaloty}} * {{sr|To są czary}} * {{sr|Ty pójdziesz górą}} * {{sr|Z wysokich Parnasów}} * {{sr|Za Niemen het precz}} * {{sr|Zakochali się}} * {{sr|Życzenie}} }} |komórka 4_2={{Pudełko komórkowe 4 |tytuł= Piosenki „młodzieżowe” |grafika= |tekst=* {{sr|Gaudeamus igitur}} * {{sr|Hej koledzy, po mozołach}} * {{sr|Hej koledzy, z wspólnej czary}} * {{sr|Ospały i gnuśny, zgrzybiały ten świat}} * {{sr|Po cóż ciągle w mieście siedzieć}} * {{sr|Polska młodzież niech nam żyje}} * {{sr|Upływa szybko życie}} * {{sr|Użyjmy dziś żywota}} * {{sr|Sadźmy, przyjacielu, róże}} * {{sr|Szła dzieweczka}} * {{sr|Żal, żal za jedyną}} }} |komórka 5_1={{Pudełko komórkowe 1|tytuł= Piosenki biesiadne |grafika= |tekst= * {{sr|Góralu, czy ci nie żal}} * {{sr|Kiedy nam się pora zdarza}} * {{sr|Komu dzwonią, temu dzwonią}} * {{sr|Kurdesz}} * {{sr|Małgorzatka}} * {{sr|Pije Kuba do Jakuba}} * {{sr|Precz, precz od nas smutek wszelki}} * {{sr|Szlachetne zdrowie}} * {{sr|Szła dzieweczka}} * {{sr|Szynkareczko, szafareczko}} * {{sr|Ten mem zdaniem dobrze żyje}} * {{sr|Wdzięczna miłości kochanej szklanice }} * {{sr|Wesoło, bracia, wesoło}} }} |komórka 5_2={{Pudełko komórkowe 3|tytuł= Pieśni zadumy i tęsknoty. Pożegnania |grafika= |tekst= * {{sr|Znaszli ten kraj}} '''Tęsknota za ukochaną/ukochanym:''' * {{sr|Za Niemen het precz}} '''Tęsknota za przeszłością:''' * {{sr|Cieszmy się bracia nadzieją}} * {{sr|Na dolinie zawierucha}} * {{sr|Nie tak in illo tempore bywało|Nie tak ''in illo tempore'' bywało}} * {{sr|O, gwiazdeczko, coś błyszczała}} * {{sr|Ozdobo twarzy, pokrętne wąsy}} * {{sr|W tył wyloty, w górę wąsy}} '''Tęsknota za krajem rodzinnym:''' * {{sr|Góralu, czy ci nie żal}} * {{sr|Pożegnanie Childe Harolda}} * {{sr|Sokół}} * {{sr|W głos serdeczna dumka płynie}} }} |komórka 6_1={{Pudełko komórkowe 2 |tytuł= Dumki i ballady |grafika= |tekst='''Ballady literackie:''' * {{sr|Alpuhara}} * {{sr|Lilie}} * {{sr|Obie kochał pan}} * {{sr|Świtezianka}} * {{sr|Trzech Budrysów}} '''Ballady ludowe:''' * {{sr|Haniu moja, pójdź do domu}} * {{sr|Krakowianka i kat}} * {{sr|Podolanka}} * {{sr|Przyjechał Jasieńko}} * {{sr|Stała nam się nowina}} → {{sr|Lilie}} * {{sr|W okolicznem mieście}} * {{sr|Zielony dzban}} }} |komórka 6_2={{Pudełko komórkowe 4|tytuł= Piosenki wędrówkowe |grafika= |tekst='''Piosenki łowieckie:''' * {{sr|Hej hej, hej hej, do kniej, do kniej}} * {{sr|Pojedziemy na łów}} * {{sr|Siedzi sobie zając pod miedzą}} * {{sr|Szła dzieweczka}} * {{sr|Śród opok i jarów}} * {{sr|Zajączek}} '''Piosenki żeglarskie:''' * {{sr|Choć burza huczy wkoło nas}} * {{sr|Hej, żeglujże, żeglarzu}} * {{sr|Wesoło żeglujmy, wesoło}} '''Piosenki o górach:''' * {{sr|Czerwony pas}} * {{sr|Góralu, czy ci nie żal}} * {{sr|Jak dobrze nam}} '''Piosenki zbójeckie''' * {{sr|Hej, bracia opryszki}} }} |komórka 7_1={{Pudełko komórkowe 1|tytuł= Hymny i hejnały |grafika= |tekst= * {{sr|Mazurek Dąbrowskiego}} (hymn Polski) * {{sr|Deutschlandlied}} (hymn Niemiec) * {{sr|God Save the King}} (hymn Wielkiej Brytanii) * {{sr|Hatikvah}} (hymn Izraela) * {{sr|Marsylianka}} (hymn Francji) * {{sr|Oda do radości}} (hymn Unii Europejskiej) * {{sr|Ще не вмерла України і слава, і воля}} (hymn Ukrainy) }} |komórka 7_2={{Pudełko komórkowe 3|tytuł= Pieśni (o) pracy |grafika= |tekst=* {{sr|Do pracy, razem do pracy}} * {{sr|Nad mularską profesyą}} (pieśń murarza) * {{sr|Polski przemysł niech nam żyje}} * {{sr|Prząśniczka}} * {{sr|Rześko, żwawo, stuku puku}} (pieśń kowala) * {{sr|Słynie Gopło i Kruszwica}} (piosnka kołodzieja) * {{sr|W ogrodzie na wodzie}} (przegląd zawodów) * {{sr|Wszystkich dziś ciekawość budzi}} (piosnka furmana) }} |komórka 8_1={{Pudełko komórkowe 2 |tytuł= O muzyce |grafika= |tekst=* {{sr|Lutni moja ulubiona}} * {{sr|Marzenie o grajku }} * {{sr|Taniec}} * {{sr|Wezmę ja skrzypki}} }} |komórka 8_2={{Pudełko komórkowe 4|tytuł= Pieśni i piosenki o śmierci |grafika= |tekst=* {{sr|Był Matysek chłop przed laty}} * {{sr|Komu dzwonią, temu dzwonią}} * {{sr|Umarł Maciek, umarł}} }} |komórka 9_1={{Pudełko komórkowe 1|tytuł= Pieśni i piosenki po angielsku |grafika= |tekst={{Projekt siostrzany|projekt=wikibooks|tekst=Zobacz w [[:en:Main_Page|anglojęzycznych Wikibooks]] podręcznik '''[[:en:Songbook/Content#123|Songbook]]'''}} * {{sr|Auld Lang Syne}} * {{sr|God Save the King}} (hymn Wielkiej Brytanii) * {{sr|Greensleeves}} }} |komórka 9_2={{Pudełko komórkowe 3|tytuł= Śpiewy w języku łacińskim |grafika= |tekst=* {{sr|Gaude mater}} * {{sr|Gaudeamus igitur}} * {{sr|Veni Creator}} }} |komórka 10_1={{Pudełko komórkowe 2 |tytuł= Pieśni i piosenki po niemiecku |grafika= |tekst={{Projekt siostrzany|projekt=wikibooks|tekst=Zobacz w [[:de:Hauptseite|niemieckojęzycznych Wikibooks]] podręcznik '''[[:de:Liederbuch/_Inhalt#Lieder|Liederbuch]]'''}} * {{sr|Deutschlandlied}} (hymn Niemiec) * {{sr|Kołysanka Brahmsa }} * {{sr|Oda do radości}} }} |komórka 10_2={{Pudełko komórkowe 4|tytuł= Pieśni i piosenki rusińskie i ukraińskie |grafika= |tekst=* {{sr|Ne chody Hryciu na weczernyci}} * {{sr|Oj ty horo kamennaja}} * {{sr|Дзюба}} * {{sr|Їхав козак за Дунай}} * {{sr|Ще не вмерла України і слава, і воля}} }} }} <noinclude>{{Div koniec}}{{ProstaStronaKoniec}}</noinclude> 2ovcqfq35ls6975ot3yqkcqesbajtld Śpiewnik/Witaj majowa jutrzenko 0 57467 545905 485043 2026-06-05T08:25:54Z Persino 2851 /* Przypisy */ 545905 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} [[File:Konstytucja 3 Maja.jpg|thumb|Jan Matejko (1838–1893), ''Konstytucja 3 maja 1791 roku'' (1891).]] == Opis == Pieśń ta śpiewana jest na melodię mazurka. Nie powstała współcześnie z opisywanym wydarzeniem, a dopiero latach trzydziestych XIX wieku. W okresie powstania listopadowego powstało kilka wersji tekstu. Maria Wacholc podaje, że pierwotną wersją była zaczynająca się od słów „Nienawidzę was próżniaki”<ref>{{Cytuj| autor = Maria Wacholc | tytuł = Śpiewnik polski | miejsce = Kraków | wydawca = Impuls | data = 2012 | isbn = 978-83-7850-141-1 | s = 39}}</ref>. Motyw tej pieśni wykorzystał Ryszard Wagner w skomponowanej w 1836 roku uwerturze ''Polonia'' (WWV 39). == Muzyka == '''Autor:''' nieznany.<br> <score raw=1 vorbis=1> \version "2.20.0" \header { title = "Witaj majowa jutrzenko" poet = "Słowa: Rajnold Suchodolski" composer = "Muzyka: Autor nieznany" arranger = "Aranżacja: Franciszek Barański" tagline = "" } global = { \key g \major \time 3/4 \tempo 4 = 116 } \score{ \new PianoStaff { << \new Staff { \global << \new Voice = "vox1" { \relative c' { \autoBeamOff \shiftOff \stemUp d8 d b'4. a8 | g8 fis e4 d | d8 d e4 fis | g8 a b4 g | d8 d b'4. a8 | g8 fis e4 d | d8 d e4 fis | g8 a b4 c | e8. d16 a2 | c8. b16 g2 | b8. a16 d,4 e8[ fis] | g8 a b[ c cis d] | e8. d16 a2 | c8. b16 g2 | b8. a16 d,4 e8[ fis] | g8 b g4 r4 \bar "|." } } \new Voice = "vox2" { \relative c' { \autoBeamOff \shiftOff \stemDown b8 b g'4. fis8 | d8 d c4 b | c8 c c4 c | d8 fis g4 d | b8 b g'4. r8 | d8 d c4 b | c8 c c4 c | d8 fis g4 a | c8. c16 fis,2 | a8. g16 d2 | fis8. fis16 c4 c8[ d] | d8 fis g8[ a ais b] | c8. c16 fis,2 | a8. g16 d2 | fis8. fis16 c4 c8[ d] | d8 d d4 r \bar "|." } } >> } \new Lyrics \lyricsto "vox1" { \lyricmode { Wi -- taj ma -- jo -- wa ju -- trzen -- ko, Świeć na -- szej pol -- skiej kra -- i -- nie, Ucz -- ci -- my cie -- bie pio -- sen -- ką Przy hu -- lan -- ce i przy wi -- nie: Wi -- taj maj, trze -- ci maj, U Po -- la -- ków bło -- gi raj! Wi -- taj maj, trze -- ci maj, U Po -- la -- ków bło -- gi raj! } } \new Staff { \clef bass \global % \autoBeamOff <g, g,,>4 <d g b> <d fis a> | <g, g,,>4 <d g> <d g> | <d d,>4 <d fis a> <d fis a> | <g, g,,>4 <d g b> <d fis a> | <g, g,,>4 <d g b> <d fis a> | <g, g,,>4 <d g> <d g> | <d d,>4 <d fis a> <d fis a> | g,4 <d g b> <d g b> | <d d,>4 <d fis a c'> <d fis a c'> | g,4 <d g b> <d g b> | <d d,>4 <d fis a> <d fis a> | g,4 <d g b> <d g b> | <d d,>4 <d fis a c'> <d fis a c'> | <g, g,,>4 <d g b> <d g b> | <d d,>4 <d fis a> <d fis a> | <g, d g>4 <g, d g> r4 \bar "|." } >> } \layout{} \midi{} } </score> <!-- [[Plik:Witaj_majowa_jutrzenko.svg]] [[Plik:Witaj_majowa_jutrzenko.ogg]] --> <br> '''Źródło''': {{Cytuj | autor= Franciszek Barański | tytuł= Jeszcze Polska nie zginęła : pieśni patryotyczne i narodowe | miejsce= Lwów | wydawca= nakładem Księgarni Polskiej B. Połonieckiego | data= ok. 1918 | url = https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 | s= 27 }} == Tekst == '''Autor:''' Rajnold Suchodolski<br> {{Kolumny|2| <poem> Witaj majowa jutrzenko, Świeć naszej polskiej krainie! Uczcimy ciebie piosenką, przy hulance i przy winie. ::Witaj Maj, piękny Maj, ::U Polaków błogi raj! Nierząd braci naszych cisnął, Gnuśność w ręku króla spała. A wtem trzeci Maj zabłysnął, I cała Polska powstała. ::Wiwat Maj, piękny Maj, ::Wiwat wielki Kołłątaj! Ale chytrości godzina, Młot swój na nas gotowała, Z piekła rodem Katarzyna Moskalami nas zalała; ::Chociaż kwitł piękny Maj, ::Rozszarpano piękny kraj. Wtenczas Polak z łzą na oku, Smutkiem powlókł blade lice, Trzeciego Maja co roku, Wspominał lubą rocznicę – ::Wzdychał ciąle: „Boże daj, ::By zabłysnął trzeci Maj!” Na ustroniu jest ruina, W której Polak pamięć chował Tam za czasów Konstantyna Szpieg na nasze łzy czatował, ::I gdy nadszedł Trzeci Maj, ::Łańcuchami brzęczał kraj. W piersiach rozpacz uwięziona W Listopadzie wstrząsła serce, Wstaje Polska z grobów łona, Pierzchają dumni morderce. ::Błysnął znowu Trzeci Maj, ::I już wolny błogi kraj! Próżno, próżno Mikołaju Z paszcz ognistych w piersi godzisz, Próżno rząd wolnego kraju Nową przysięgą uwodzisz. ::To nasz śpiew: Wiwat Maj, ::Niech przepadnie Mikołaj. O, zorzo Trzeciego Maja, Pod twojemi promieniami Przez armaty Mikołaja Pójdziem w Litwę z bagnetami. ::Wrogu precz! Witaj maj, ::Polski i litewski kraj! </poem> }} <br> '''Źródło''': {{Cytuj | autor= Franciszek Barański | tytuł= Jeszcze Polska nie zginęła : pieśni patryotyczne i narodowe | miejsce= Lwów | wydawca= nakładem Księgarni Polskiej B. Połonieckiego | data= ok. 1918 | url = https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 | s= 34 }} == Zobacz też == {{Wikipedia|Witaj, majowa jutrzenko}} {{Wikiźródła|Trzeci maj Litwina}} * ''[https://bibliotekapiosenki.pl/utwory/Trzeci_Maj_(Witaj_majowa_jutrzenko) Witaj majowa jutrzenko]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] == Przypisy == {{Przypisy}} 161gmktj79rq232cpagdact4a9upm97 Śpiewnik/Boże, coś Polskę 0 57494 545884 485044 2026-06-05T07:29:11Z Persino 2851 /* Przypisy */ 545884 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} [[Plik:Rok 1863 Polonia.JPG|thumb|Jan Matejko (1838–1893), ''Polonia, rok 1863'' (1864).]] == Opis == Pierwsza wersja tekstu, autorstwa Alojzego Felińskiego, napisana była w 1816 roku na rocznicę koronacji Aleksandra I i kończyła się słowami „Przed Twe ołtarze zanosim błaganie, naszego króla zachowaj nam Panie”. Muzykę napisał Jan Nepomucen Kaszewski<ref>{{Cytuj | autor= Maria Wacholc | tytuł = Śpiewnik polski | miejsce = Kraków | wydawca = Impuls | data = 2012 | isbn = 9788378501411 | s = 47}}</ref>. W kolejnych latach pieśń zaczęto śpiewać na melodię pieśni kościelnej ''Bądź pozdrowiona, Panienko Maryja'', a następnie ''Serdeczna Matko, opiekunko ludzi''. Zmieniono także słowa, przede wszystkim refren: „Naszą Ojczyznę racz nam wrócić Panie”. Po odzyskaniu niepodległości ponownie zmodyfikowano refren: „Przed Twe ołtarze zanosim błaganie, Ojczyznę wolną pobłogosław Panie”<ref>{{Cytuj | autor= Maria Wacholc | tytuł = Śpiewnik polski | miejsce = Kraków | wydawca = Impuls | data = 2012 | isbn = 9788378501411 | s = 47}}</ref>. == Muzyka == '''Autor:''' nieznany (pieśń kościelna z XVIII wieku)<br> <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Boże, coś Polskę" poet = "Słowa: Alojzy Feliński, Antoni Gorecki" meter = "i inni, nieznani" composer = "Muzyka: Autor nieznany (XVIII wiek)" arranger = "Aranżacja: Franciszek Barański" tagline = "" } \score{ \new PianoStaff { << \new Staff { \key e \major \autoBeamOff \partial 2 { <gis' b'>4 <gis' b'>8 <fis' a'> } | <e' gis'>4. <e' gis'>8 <e' gis'> <e' gis'> <dis' fis'> <e' gis'> | <gis' b'>4 <fis' a'> <fis' a'>4 <fis' a'>8 <e' gis'> | <dis' fis'>4. <cis' e'>8 <b dis'> <a' cis''> <gis' b'> <fis' a'> | <fis' a'>4 <dis' fis'>8 r8 % r4 r4 | <gis' b'>4 <gis' b'>8 <fis' a'> | <e' gis'>4. <e' gis'>8 <e' gis'> <e' gis'> <dis' fis'> <e' gis'> | <gis' b'>4 <fis' a'> <fis' a'>4 <fis' a'>8 <e' gis'> | <dis' fis'>4 <dis' fis'>8 <cis' e'> <b dis'>( <a' cis''>) <gis' b'> <e' fis' a'> | <b dis' fis' a>4 <b e' gis>8 r8 <e' gis' b'>4 <e' gis' b'>8 <e' gis' b'> | <e' a' cis''>4. <e' a' cis''>8 <fis' gis' dis''> <fis' gis' dis''> <fis' gis' cis''> <fis' gis' dis''> | <e' gis' e''>4 <e' gis' b'> <e' cis'' e''>4 <dis' b' dis''>8 <cis' a' cis''> | <b gis' b'>4 <b e' gis'> <a' cis''>8 <gis' b'> <fis' a'> <a b dis'> | <a b dis' fis'>4 <gis b dis'>8 r8 <b e' b'>4 <b e' b'>8 <b e' b'> | <cis' e' cis''>4. <cis' e' cis''>8 <dis' fis' dis''> <dis' fis' dis''> <cis' e' cis''> <dis' fis' dis''> | <e' gis' e''>4 <e' gis' b'> <e' cis'' e''>4 <dis' b' dis''>8 <cis' a' cis''> | <b e' b'>4 <b e' gis'> <a' cis''>8 <gis' b'> <fis' a'> <a b dis'> | <a b fis'>4 <gis b dis'> \bar "|." } \addlyrics { Bo -- że, coś Pol -- skę przez tak li -- czne wie -- ki O -- ta -- czał bla -- skiem po -- tę -- gi i chwa -- ły, Coś ją o -- sła -- niał tar -- czą sej o -- pie -- ki Od nie -- szczęść, któ -- re przy -- gnę -- bić ją mia -- ły, Przed Twe oł -- ta -- rze za -- no -- sim bła -- ga -- nie: Na -- szą Oj -- czy -- znę racz nam zwró -- cić, Pa -- nie! Przed Twe oł -- ta -- rze za -- no -- sim bła -- ga -- nie: Oj -- czy -- znę wol -- ną po -- bło -- go -- sław, Pa -- nie! } \new Staff { \clef bass \key e \major \partial 2 { <e, e>4 <e e,>8 <b, b,,> } | <e, e>4 <b, e gis> <e, e> <b, e gis> | <b, b,,> <b, fis a> <b, b,,> <b, fis a> | <b, b,,> <b, fis a> <b, b,,> <b, fis a> | <b, dis fis a> <b, e gis>8 r8 %r4 r4 | <e, e>4 <e e,>8 <b, b,,> | <e, e>4 <b, e gis> <e, e> <b, e gis> | <b, b,,> <b, fis a> <b, b,,> <b, fis a> | <b, b,,> <b, fis a> <b, b,,> <b, fis a> | <b, b,,> <e, b, e>8 r8 <e, e>4 <b, e gis b> | <a,, a,> <cis e b> <b,, b,> <fis a b> | <e,, e,> <b, e gis b> <a,, a,> <a, e a> | <b,, b,> <b, e gis> <b,, b,> <b, dis fis b> | b, <e, e>8 r8 <gis, e gis>4 <gis, e gis>8[ <gis, e gis>] | <a, e a>4. <a, e a>8 <b, fis b>8[ <b, fis b>] <b, fis b>[ <b, fis b>] | <e,, e,>4 <b, e gis> <a,, a,> <a, a> | <b,, b,> <b, e gis> <b,, b,> <b, dis fis b> | b, <e, e> \bar "|." } >> } \layout{} \midi{} } </score> <!-- [[Plik:Boże,_coś_Polskę.svg]] [[Plik:Boże,_coś_Polskę.ogg]] --> <br> '''Źródło:''' Barański Franciszek, ''[https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 Jeszcze Polska nie zginęła : pieśni patryotyczne i narodowe]'', Lwów: nakładem Księgarni Polskiej B. Połonieckiego, [ok. 1918], s. 2–3. == Tekst == '''Autorzy''': Alojzy Feliński, Antoni Gorecki i inni, nieznani<br> {{Kolumny|2| <poem> Boże, coś Polskę przez tak liczne wieki Otaczał blaskiem potęgi i chwały. Nagle spod swojej usunął opieki I wzniósł te ludy, co jej służyć miały. ::Przed Twe ołtarze zanosim błaganie, ::Naszą Ojczyznę racz nam wrócić, Panie! Ty! coś ją potem tknięty jej upadkiem, Wspierał walczącą za najświętszą sprawę, I chcąc świat cały mieć jej męstwa świadkiem, Wśród naszych nieszczęść pomnożył jej sławę. ::Przed Twe ołtarze zanosim błaganie... Niedawnoś wolność zabrał z polskiej ziemi, A też krwi naszej popłynęły rzeki. Jakże to musi być okropnie z temi, Którym ojczyznę odbierasz na wieki. ::Przed Twe ołtarze zanosim błaganie... Jedno Twe słowo, wielki gromów Panie Z prochów nas podnieść znowu będzie zdolne; A gdy zasłużym na Twe ukaranie, Obróć nas w prochy — ale prochy wolne!... ::Przed Twe ołtarze zanosim błaganie... </poem> }} <br> '''Źródło:''' Barański Franciszek, ''[https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 Jeszcze Polska nie zginęła : pieśni patryotyczne i narodowe]'', Lwów: nakładem Księgarni Polskiej B. Połonieckiego, [ok. 1918], s. 2–3. == Przypisy == {{Przypisy}} == Zobacz też == {{Wikipedia|Boże, coś Polskę}} {{Wikiźródła|Boże coś Polskę}} * ''[https://bibliotekapiosenki.pl/utwory/Boze_cos_Polske Boże, coś Polskę]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] aky2trbzthqdbe9hjydxqkvsi4ggwik Śpiewnik/Małgorzatka 0 58054 545892 446742 2026-06-05T07:50:05Z Persino 2851 /* Przypisy */ 545892 wikitext text/x-wiki {| cellpadding="10px" | <span style="color:#0645AD; border: #0645AD solid; border-width: 0 0 3px 0; border-radius: 2px | border: transparent solid; border-width: 0 0 3px 0; border-radius: 2px;> Opis </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Muzyka|Muzyka]] </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Tekst|Tekst]] </span> |} == Opis == Piosenka ludowo-wojskowa. Wywodzi się ze środowiska żaków krakowskich<ref>{{Cytuj | autor = Zbigniew Adrjański | tytuł = Złota księga pieśni polskich : pieśni, gawędy, opowieści | miejsce = Warszawa | wydawca = Bellona | data = 2011 | s = 36}}</ref> z XVI wieku<ref>{{Cytuj | tytuł = ...Pieśń ujdzie cało... | autor = Leon Łochowski, Wiesław Korniewski | miejsce = Warszawa | wydawca = Oddział Kultury Departamentu Wychowania Wojska Polskiego, Centralny Ośrodek Metodyczny Domu Wojska Polskiego | data = 1992 | s=177–178}}</ref>. W ''Pieśniach ludu'' Glogera umieszczona jest w grupie pieśni bożonarodzeniowych, śpiewanych podczas wystawiania szopki<ref>{{Cytuj | tytuł = Pieśni ludu | autor = Zygmunt Gloger, Zygmunt Noskowski | miejsce = Kraków | data = 1892 | wydawca = W. L. Anczyc | s=57 | url = https://polona.pl/item/piesni-ludu,MTE1OTUwMjk/60/#info:metadata}}</ref>. Tekst piosenki podlegał licznym zmianom: Małgorzatka tańcowała m. in. z chłopakami, z hussarzami, z ułanami, z żołnierzami, ze strzelcami... W powieści ''Rok 1794'' Władysława Reymonta jeden z bohaterów przerabia słowa piosenki, nadając im wydźwięk polityczny: „Za górami, za lasami / tańcowała Katarynka z Orłowami”<ref>{{Cytuj| autor = Władysław Reymont | tytuł = Rok 1784. T. 2, Nil desperandum | url = https://pl.wikisource.org/wiki/Nil_desperandum/XII | miejsce = Kraków | wydawca = Gebethner i Wolff | data = 1916}}</ref> == Muzyka == '''Autor nieznany''' (melodia ludowa) <score raw=1 vorbis=1> \version "2.20.0" \header { tagline="" } \score { \new Staff { \key g \major \time 3/8 \tempo 4=120 \autoBeamOff \relative c'' { d4 e8 | \afterGrace d8 { b } g4 | \grace { b8 } c4 a8 | \afterGrace d8 { b } g4 | %\addlyrics { \small { % Za bo -- ra -- my, za la -- sa -- my } } \repeat volta 2 { \autoBeamOff g16 a b8 c | g16 a b8 c | \grace {cis8} d4 b8 | \afterGrace a8 { a8 } g4 | } } \addlyrics { \small { Za bo -- ra -- my, za la -- sa -- my Tań -- co -- wa -- ła Mał -- go -- rzat -- ka z_żoł -- nie -- rza -- my. } } } \layout {} \midi {} } </score> {{br}} '''Źródło''': {{Cytuj| autor = Oskar Kolberg | tytuł = Lud : jego zwyczaje, sposób życia, mowa, podania, przysłowia, obrzędy, gusła, zabawy, pieśni, muzyka i tańce | wolumin = Serya 4, Kujawy. Część 2 | miejsce = Warszawa | data = 1867 | url = https://polona.pl/item/lud-jego-zwyczaje-sposob-zycia-mowa-podania-przyslowia-obrzedy-gusla-zabawy,MTQ4ODc2MDI/66/#info:metadata | s = 61}} == Tekst == '''Autor nieznany''' (piosenka ludowa) {{Kolumny|3| <poem> :1. Za górami, ::za lasami, Tańcowała Małgorzatka ::z chłopakami. :2. Przyszedł ojciec, ::przyszła matka: — Pójdź do domu, pójdź do domu, ::Małgorzatka! — :3. Oj nie pójdę, ::daję słowo, Mam czépeczek, mam czépeczek, ::suknię nową. :4. Mam sukienkę ::z falbanami, I czépeczek, i czépeczek ::ze wstążkami. :5. Małgorzatka ::tańcowała, Póki się nie, póki się nie ::podstarzała. :6. Nie ma już pięknej ::kochanki; Baba nosi, baba nosi ::obwarzanki. :7. Ojciec, matka ::leżą w grobie, Małgorzatka, Małgorzatka ::ślocha sobie. :8. Pocznie w zimno ::w palce dmuchać: Oj trza było, oj trza było ::matki słuchać.</poem>}} {{br}} '''Źródło''': {{Cytuj| autor = Oskar Kolberg | tytuł = Mazowsze : obraz etnograficzny | wolumin = 1, Mazowsze polne. Część 1 | miejsce = Kraków | wydawca = Zapomoga Kasy im. J. Mianowskiego | data = 1885| url = https://polona.pl/item/mazowsze-obraz-etnograficzny-t-1-mazowsze-polne-cz-1,OTY3NTQ1MDk/101/#info:metadata | s = 86}} == Przypisy == {{Przypisy}} == Zobacz też == * ''[https://bibliotekapiosenki.pl/utwory/Za_gorami_(Za_gorami_za_lasami) Za górami, za lasami]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] ** ''[https://bibliotekapiosenki.pl/utwory/Malgorzatka/tekst Małgorzatka]'' (wiersz Juliana Tuwima inspirowany piosenką) w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] * ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7548 Za górami, za lasami]'' w serwisie [http://antologia.oskarkolberg.pl/ Antologia Pieśni Polskich] [http://oskarkolberg.pl/ Instytutu im. Oskara Kolberga] ** ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=8614 A na boru jagody są]'' – wariant piosenki w serwisie [http://antologia.oskarkolberg.pl/ Antologia Pieśni Polskich] [http://oskarkolberg.pl/ Instytutu im. Oskara Kolberga] nf0u2dihye7kef6etou3xubi7nbukv7 Śpiewnik/Śród opok i jarów 0 58203 545900 444799 2026-06-05T08:14:02Z Persino 2851 /* Przypisy */ 545900 wikitext text/x-wiki == Opis == Piosenka pochodzi z opery ''Wolny strzelec'' Carla von Webera z librettem Johanna Friedricha Kinda. Autorem polskiego przekładu jest Adam Mickiewicz; jedna z wersji piosenki występuje w I części ''Dziadów''<ref>Franciszek Barański, ''[https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 Jeszcze Polska nie zginęła : pieśni patrjotyczne i narodowe]''. Lwów, Księgarnia Polska Bernarda Połonieckiego, [ca 1918]. Pieśń 66, s. 65.</ref>. Franciszek Barański w zbiorze ''Jeszcze Polska nie zginęła'' zamieścił również wersję patriotyczną tekstu pod tytułem ''Marsz wolnych strzelców sandomirskich Małachwskiego'', zaczynającą się od słów „Na odgłos narodu i wodza, i brata” i z refrenem „Uderzmy, wybijmy wrogów, wrogów, wrogów, wrogów”<ref>Franciszek Barański, ''[https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 Jeszcze Polska nie zginęła : pieśni patrjotyczne i narodowe]''. Lwów, Księgarnia Polska Bernarda Połonieckiego, [ca 1918]. Pieśń 66, s. 64.</ref> == Muzyka == '''Autor:''' [[w:Carl Maria von Weber|Carl von Weber]] (1786–1826) <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Śród opok i jarów" poet = "Autor: Johann Friedrich Kind" meter = "Tłumacz: Adam Mickiewicz" composer = "Muzyka: Carl Maria von Weber" arranger = "Aranżacja: Franciszek Barański" tagline = "" } \score{ << \new PianoStaff << \new Staff = "RH" \relative c' { \clef treble \key d \major \time 2/4 \tempo 4 = 120 \autoBeamOff % tu prawa ręka \partial 8 a8 | <fis d'>4 d'8 fis | <fis a>4 <d fis>8 <d fis> | <cis e>8[( a']) <cis, e> a' | <a, fis'>4 <fis d'>8 a8 | <fis d'>4 d'8 fis | <fis a>4 <d fis>8 <d fis> | <cis e>8[( a']) <e a cis>8 <d gis b>8 | a'8 a r8 a,8 | <a cis fis>4 <a cis fis>8 <a cis fis>8 ] | <b d>4 <b d>8 <b d>8 | <b e g>4 <b e g>8 <b e g> | <a cis e>4 r8 a8 | <a cis fis>4 <a cis fis>8 <a cis fis> | <b e g>4 <b e g>8 <b e g> | % ? <cis e>4 <cis e>8 <cis e> | <a d>4 r4 | d4 a8 fis' | d4 a8 fis' | a16[ g] e8 a16[ g] e8 | a16[ g] e8 a16[ g] e8 | d4 a8 fis' | d4 a8 fis' | a16[ g] e8 a16[ g] e8 | a16[ g] e8 a16[ g] e8 | fis8 d a'4 | fis8 d a'4 | <fis, a d>4.( <a fis'>8 ) | <fis a d>4 r4 \bar "|." } \addlyrics { \small { Śród o -- pok i ja -- rów i plo -- nów i gło -- gów, Przy dźwię -- ku o -- ga -- rów i ru -- sznic i ro -- gów, Na ko -- niu, co w_cwa -- le so -- ko -- li ma lot, I z_bro -- nią, co w_strza -- le hucz -- niej -- sza nad grzmot! Da -- lej -- że, da -- lej -- że, da -- lej, da -- lej, da -- lej, da -- lej! Da -- lej -- że, da -- lej -- że, da -- lej, da -- lej, da -- lej, da -- lej! Z_tro -- pu w_trop, z_tro -- pu w_trop, hop, hop! } } \new Staff = "LH" { \clef bass \key d \major \time 2/4 % tu lewa ręka \autoBeamOff \partial 8 r8 | <d, a, d>4 fis8[ a] | <d a d'>4. r8 | <a, a>8[ e] <a, a>8[ e] | <d, d>8[ a,] <d, d>8 r8 | <d, a, d>4 fis8[ a] | <d a d'>4. r8 | <e, e>4 <e, e>8[ <e, e>] | <a,, a,>4 r8 a,8 | <fis, fis>4 <fis, fis>8[ <fis, fis>] | <b, fis>4 <b, fis>8[ <b, fis>] | <e, e>4 <e, e>8[ <e, e>] | a,4 a,8[ a, ] | <fis, fis>4 <fis, fis>8 <fis, fis> | <e, e>4 <e, e>8[ <e, e>] | % ? <a, g>4 <a, g>8[ <a, g> ] | <d fis>4 r4 | % <g, g>4 <g, g>8[ <g, g> ] | <d fis>4 r4 | <d, a, d>4 <d, a, d>8[ <d, a, d> ] | <d, a, d>4 <d, a, d>8[ <d, a, d> ] | <a, cis e>8 r8 <a, cis e>8 r8 | <a, cis e>8 r8 <a, cis e>8 r8 | <d, a, d>4 <d, a, d>8[ <d, a, d> ] | <d, a, d>4 <d, a, d>8[ <d, a, d> ] | <a, cis e>8 r8 <a, cis e>8 r8 | <a, cis e>8 r8 <a, cis e>8 r8 | <d fis>8[ <d fis> ] <a, e>4 | <d fis>8[ <d fis> ] <a, e>4 | <d, a, d>4. <d, a, d>8 | <d, a, d>4 r4 \bar "|." } >> >> \midi{} \layout{} } </score> <br> '''Źródło:''' Franciszek Barański, ''[https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 Jeszcze Polska nie zginęła : pieśni patrjotyczne i narodowe]''. Lwów, Księgarnia Polska Bernarda Połonieckiego, [ca 1918]. Pieśń 66, s. 73–74. == Tekst == '''Autor:''' Johann Friedrich Kind (1768–1843)<br> '''Tłumacz:''' [[w:Adam Mickiewicz|Adam Mickiewicz]] (1798–1855) {{Kolumny|2| <poem> 1. Śród opok i jarów I plonów i głogów, Przy dźwięku ogarów I rusznic i rogów; ::Na koniu, co w cwale ::Sokoli ma lot, ::I z bronią, co w strzale ::Huczniejsza nad grzmot: Dalejże, dalejże, dalej, dalej, dalej, dalej! Dalejże, dalejże, dalej, dalej, dalej, dalej! Z tropu w trop, z tropu w trop, Hop, hop! 2. Wesoły jak dziecko, Jak zbójca krwi chciwy Odważnie, zdradziecko, Bój zaczął myśliwy, ::Czy palnie na smugi, ::Czy w górę do chmur: ::Tam krwi płyną strugi, ::Stąd leci grad piór. Dalejże, dalejże... 3. Któż żubra wywiedzie Z ostępu za rogi, Kto kudły niedźwiedzie Podesłał pod nogi? ::Hej lasy i niwy, ::Ozwijcie się w chór, ::Zatrąbił myśliwy, ::Król lasów i gór. Dalejże, dalejże... 4. Czyj dowcip gnał rojem Lataczów do sideł? Kto wstępnym wziął bojem Sztandary ich skrzydeł? ::Hej wiatry w burzliwy ozwijcie się chór! ::Wystrzelił myśliwy, ::Król wiatrów i chmur! Dalejże, dalejże... </poem> }} <br> '''Źródło:''' Franciszek Barański, ''[https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 Jeszcze Polska nie zginęła : pieśni patrjotyczne i narodowe]''. Lwów, Księgarnia Polska Bernarda Połonieckiego, [ca 1918]. Pieśń 66, s. 64–65. == Zobacz też == {{Wikiźródła|Chór strzelców (Mickiewicz, 1899)}} * ''[https://bibliotekapiosenki.pl/utwory/Srod_opok_i_jarow Śród opok i jarów]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] == Przypisy == {{Przypisy}} 5w47n4kadai5z1aiptk3bbrr0czyjx5 Śpiewnik/Serce nie sługa 0 58204 545912 413855 2026-06-05T10:29:54Z Ashaio 4702 link 545912 wikitext text/x-wiki == Opis == [[Plik:Serce nie sługa - Zabobon czyli krakowiacy i górale - 1815.png|thumb|right|Tekst piosenki "Serce nie sługa" w rękopisie opery "Zabobon, czyli krakowiacy i górale" J. N. Kamińskiego z 1815 roku]] Piosenka pojawia się jako śpiewka Zosi w pierwszej scenie III aktu sztuki ''Zabobon, czyli krakowiacy i górale'' z 1816 roku (autorem tekstu sztuki jest Jan Nepomucen Kamiński, a muzykę skomponował Karol Kurpiński, jednak sama piosenka może być wcześniejsza). W wersji patriotycznej ''{{sr|Polak nie sługa}}'' („wolnością żyje, do wolności wzdycha”) zdobyła popularność podczas powstania listopadowego. == Muzyka == '''Autor:''' Karol Kurpiński <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Serce nie sługa" poet = "Słowa: Jan Nepomucen Kamiński" composer = "Muzyka: Karol Kurpiński" arranger = "Aranżacja: Franciszek Barański" tagline = "" } \score{ \new PianoStaff << \new Staff = "RH" { \clef treble \key g \major \time 3/4 \tempo 4 = 120 \autoBeamOff % tu prawa ręka <b d' g'>4 <g' b'>4. <a' c''>8 | <c'' e''>4 <b' d''> r | <c'' e''>8 <b' d''> <a' c''>4. <fis' a'>8 | <a' c''>4 <g' b'> r | <d' g'>4 <g' b'>4. <a' c''>8 | <c'' e''>4 <b' d''> r | <c'' e''>8 <b' d''> <a' c''>4. <fis' a'>8 | <fis' a'>4 <b d' g'> r | \repeat volta 2 { d'8([ fis')] <fis' a'>4. <d' fis'>8 | <d' g'>4 <g' b'> r | <c'' e''>8. <b' d''>16 <a' c''>4. <fis' a'>8 | <a' c''>4 <g' b'> r | <g' b'>4 <g' b'>4. <a' c''>8 | <c'' e''>4 <b' d''> r | <c'' e''>8 <b' d''> <a' c''>4. <fis' a'>8 | <fis' a'>4 <b d' g'> r | } } \addlyrics { \small { Ser -- ce nie słu -- ga, nie zna co to pa -- ny, Nie da się o -- kuć prze -- mo -- cą w_kaj -- da -- ny. Mi -- ło -- ścią ży -- je, w_niej szu -- ka roz -- ko -- szy, Bez niej u -- sy -- cha jak ró -- ża bez ro -- sy. } } \new Staff = "LH" { \clef bass \key g \major \time 3/4 % tu lewa ręka g,4 <d g b> <d g b> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | g, <d g b> <d g b> | g,4 <d g b> <d g b> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | <d, d> <g, g> r | \repeat volta 2 { <d, d> <fis a c'> <fis a c'> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | g, <d g b> <d g b> | g,4 <d g b> <d g b> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | <d, d> <g, g> r | } } >> \midi{} \layout{} } </score> <br> '''Źródło:''' Franciszek Barański, ''[https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 Jeszcze Polska nie zginęła : pieśni patrjotyczne i narodowe]''. Lwów, Księgarnia Polska Bernarda Połonieckiego, [ca 1918]. Pieśń 20, s. 17. == Tekst == '''Autor:''' Jan Nepomucen Kamiński {{Kolumny|2| <poem> 1. Serce nie sługa, nie zna co to pany, Nie da się okuć psemocą w kajdany: Miłością żyie, w niey suka rozkosy, Bez niey usycha, iak kwiatek bez rosy. 2. Śpiewa w klatecce więziona ptasyna, że była wolną, sobie przypomina, A choć jej ptasznik dość daie zywności, Pseciez psez sceble wzdycha do wolności./bis </poem> }} <br> '''Źródło:''' Jan N. Kamiński, ''[https://polona.pl/item/zabobon-czyli-krakowiacy-i-gorale-opera-we-dwoch-aktach,NTMxODU3NjU/165/#info:metadata Zabobon czyli Krakowiacy i Górale : opera we dwóch aktach]''. [Polska], 1815. == Zobacz też == {{Wikiźródła|Serce nie sługa}} * ''[https://bibliotekapiosenki.pl/utwory/Serce_nie_sluga Serce nie sługa]'' w serwisie [https://bibliotekapiosenki.pl/sbpp Cyfrowa Biblioteka Polskiej Piosenki] aehjahm1lzy5ff8lqwe3y84dn4rtps6 Śpiewnik/God Save the King 0 58394 545889 446522 2026-06-05T07:39:40Z Persino 2851 /* Przypisy */ 545889 wikitext text/x-wiki {| cellpadding="10px" | <span style="color:#0645AD; border: #0645AD solid; border-width: 0 0 3px 0; border-radius: 2px | border: transparent solid; border-width: 0 0 3px 0; border-radius: 2px;> Opis </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Muzyka|Muzyka]] </span> | <span style="color:#0645AD> [[{{PAGENAME}}/Tekst|Tekst]] </span> |} == Opis == [[w:Hymn Wielkiej Brytanii|Hymn Wielkiej Brytanii]] (w pierwotnej wersji ''God Save the King'') był także hymnem brytyjskich kolonii i terytoriów zależnych (m.in. Kanady, Australii). Pieśń była przekładana na wiele języków i zainspirowała hymny różnych narodów: hymn Rosji w latach 1816–1833 ''Боже, Царя храни!'', polski przekład ''Niech żyje król'' z 1829 r. (na koronację cara Mikołaja I na króla Polski); tę samą melodię mają hymn Lichtensteinu ''Oben am jungen Rhein'' i szwajcarska pieśń ''Rufst du, mein Vaterland''. W Stanach Zjednoczonych na tę melodię śpiewa się pieśń patriotyczną ''My Country, 'tis of thee'', która w połączeniu z pierwszą zwrotką ''God Save the Queen'' stała się kanadyjską pieśnią młodzieżową. W Polsce melodia ta wykorzystana jest też w pieśni patriotycznej ''Cześć polskiej ziemi, cześć'' oraz w pieśni kościelnej ''Jezu, miłości Twej''. == Muzyka == '''Autor:''' nieznany <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "God Save the King" poet = "Słowa: autor nieznany" composer = "Muzyka: autor nieznany" arranger = "(Pierwsze wykonanie w 1745 r.)" tagline = "" } \score{ << \new Staff \with { midiInstrument = "flute" } { \tempo 4 = 80 \clef treble \key g \major \time 3/4 \new Voice = "mel" << \relative g' { g4 g a | fis4. g8 a4 | b4 b c | b4. a8 g4 | a4 g fis | g2. | d'4 d d | d4. c8 b4 | c4 c c | c4. b8 a4 | b4 c8[( b]) a[( g]) | b4. c8 d4 | e8[( c]) b4 a | g2. | } \relative g' { d4 e e | d4. e8 fis4 | g4 g a | g4. fis8 e4 | e4 d d | d2. | b'4 b b | b4. a8 g4 | fis4 a fis | <fis a>4. g8 fis4 | g4 g8 s s s | g4. fis8 g4 | g8[( a]) g4 fis | d2. | } \relative c' { b4 b c | s4. d8 d4 | d4 e e | d4. c8 b4 | c4 b c | b2. | g'4 g g | g4. a8 d,4 | d4 d d | d4. d8 d4 | d4 e8[( d]) c[( b]) | d4. d8 d4 | e8[( e]) d4 c | b2. | } >> } \addlyrics { God save our gra -- cious King, Long live our no -- ble King, God save the King: Send him vi -- cto -- ri -- ous, Ha -- ppy and glo -- ri -- ous, Long to _ reign _ o -- ver us: God _ save the King! } \new PianoStaff << \new Staff = "RH" { \tempo 4 = 80 \clef treble \key g \major \time 3/4 % tu prawa ręka \new Voice = "mel2" << \relative g' { g4 g a | fis4. g8 a4 | b4 b c | b4. a8 g4 | a4 g fis | g2. | d'4 d d | d4. c8 b4 | c4 c c | c4. b8 a4 | b4 c8[ b] a[ g] | b4. c8 d4 | e8[ c] b4 a | g2. | } % \relative g' { % d4 e e | d4. e8 fis4 | % g4 g a | g4. fis8 e4 | % e4 d d | d2. | % b'4 b b | b4. a8 g4 | % fis4 a fis | <fis a>4. g8 fis4 | % g4 g8 s s s | g4. fis8 g4 | % g8[ a] g4 fis | d2. | % } \relative c' { b4 b c | s4. d8 d4 | d4 e e | d4. c8 b4 | c4 b c | b2. | g'4 g g | g4. a8 d,4 | d4 d d | d4. d8 d4 | d4 e8[ d] c[ b] | d4. d8 d4 | e8[ e] d4 c | b2. | } >> } \new Staff = "LH" %\relative c { \clef bass \key g \major \time 3/4 % tu lewa ręka <g, g>4 <e, e> <c, c> | <d, d>2 <d, d>4 | <g, g>4 <e, e> <c, c> | <d, d>4. <dis, dis>8 <e, e>4 | <c, c>4 <d, d> <d, d> | <g, g>2. | g,4 b, d | <g, g>2 <g, g>4 | d4 fis a | d2 d4 | <g, g>4 <g, g> <g, g> | <g, g>4. <a, a>8 <b, b>4 | c'8[( c]) d4 <d, d> | <g, g>2. | } >> >> \midi{} \layout{} } </score> Źródło: ''[https://en.wikisource.org/wiki/Index:Childs_own_music_book.djvu The Child's Own Music Book]'', New York : Mumil Publishing Co., Inc., 1918, [https://en.wikisource.org/w/index.php?title=Page:Childs_own_music_book.djvu/287&action=edit&redlink=1 s. 279]. == Tekst == '''Autor:''' nieznany<br> <poem> God save our gracious '''King'''<ref>W okresie panowania królowej, zamienia się wszędzie '''King''' na '''Queen''' i wstawia odpowiednie zaimki ('''her''', '''she'''). Ostatni dwuwiersz można śpiewać także: „With heart and voice to sing: God save the King!”.</ref>! Long live our noble '''King'''! God save the '''King'''! Send '''him''' victorious, Happy and glorious, Long to reign over us: God save the '''King'''! O Lord our God arise, Scatter '''his''' enemies, And make them fall: Confound their politics, Frustrate their knavish tricks, On Thee our hopes we fix: God save us all. Thy choicest gifts in store, On '''him''' be pleased to pour; Long may '''he''' reign: May '''he''' defend our laws, And ever give us cause, To sing with heart and voice, God save the '''King'''! </poem> <br> '''Źródło:''' ''[https://archive.org/details/cu31924013291715/page/n207/mode/2up The book of English songs. From the sixteenth to the nineteenth century]'', red. Charles Mackay, London, 1851, s. 195. == Zobacz też == {{Wikipedia|Hymn Wielkiej Brytanii}} {{Wikiźródła|Cześć polskiej ziemi, cześć}} * [https://bibliotekapiosenki.pl/utwory/Czesc_polskiej_ziemi_czesc Cześć polskiej ziemi, cześć] w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Piosenki] == Przypisy == {{Przypisy}} bmzwheo9dy5tbyvwk18oqoeaf4qukq4 Śpiewnik/Dalibóg, że powiem mamie 0 58421 545886 425323 2026-06-05T07:33:38Z Persino 2851 /* Przypisy */ 545886 wikitext text/x-wiki == Opis == Autorem bardziej znanej melodii tej piosenki jest Stanisław Moniuszko<ref>{{Cytuj| autor= Stanisław Moniuszko | tytuł = Dalibógże | miejsce = Warszawa | wydawca = Gebethner i Wolff | data = ok. 1864–1865 | url = https://polona.pl/item/dalibogze,ODg1NDQzMjg/2/#info:metadata }}</ref>. == Muzyka == '''Autor:''' nieznany <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Dalibóg, że powiem mamie" poet = "Słowa: Józef Massalski" composer = "Autor: nieznany" arranger = "Aranżacja: Karol Lipiński" tagline = "" } \score{ << \new Staff \with { midiInstrument = "flute" } { \new Voice = "mel" { \autoBeamOff \relative c'' { \clef treble \key a \major \time 3/8 \tempo 4=100 % tu melodia \autoBeamOff e16^\f e, gis8 b | cis16 e, a8 cis | b16 e, fis8 gis | a16 cis fis8 e | e16 e, gis8 b | cis16 e, a8 cis | b16 e, fis8 gis | a16 cis a8 a | fis8. gis16 ais fis | b8. cis16 d e | fis8. fis,16 gis ais | b cis d8 dis | e16 e, gis8 b16[ d] | cis16 e, a8 cis | cis16 e, fis8 gis | a16 cis fis8.\> e16 | e16 e, gis8 b16[ d] | cis16 e, a8 cis | cis16 e, fis8 gis | a16 cis a8 a \bar "|." } } \addlyrics { \small { Da -- li -- bóg że po -- wiém ma -- mie; on coś złe -- go zro -- bić go -- tów: wzdy -- cha, pła -- cze, rę -- ce ła -- mie, klnie po -- tę -- gę mych przy -- mio -- tów. Na -- zwał se -- rce mo -- je lo -- dem, wzrok szty -- le -- tem, je -- szcze kła -- mie, że ja je -- go łez po -- wo -- dem, da -- li -- bóg że po -- wiém ma -- mie! Że ja je -- go łez po -- wo -- dem, da -- li -- bóg że po -- wiém ma -- mie! } } } \new PianoStaff << \new Staff = "RH" \relative c'' { \clef treble \key a \major \time 3/8 % tu prawa ręka e16[ e,]^\p gis8[ b] | cis16[ e,] a8[ cis] | b16[ e,] fis8[ gis] | a16[ cis] fis8[ e] | e16[ e,] gis8[ b] | cis16[ e,] a8[ cis] | b16[ e,] fis8[ gis] | a16[ cis] a8[ a] | <fis fis'>8.[ <gis gis'>16 <ais ais'> <fis fis'>] | <b b'>8.[ <cis cis'>16 <d d'> <e e'>] | <fis fis'>8.[ <fis, fis'>16 <gis gis'> <ais ais'>] | <b b'>16[ <cis cis'>] <d d'>8[ <dis dis'>] | <e e'>16[ e] a8[ cis16 e] | <cis, cis'>16[ <e, e'>] <a a'>8[ <cis cis'>] | <b b'>16[ <e, e'>] <fis fis'>8[ <gis gis'>] | <a a'>16[ <cis cis'>] <fis fis'>8.[ <e e'>16] | <e e'>16[ e] a8[ cis16 e] | <cis, cis'>16[ <e, e'>] <a a'>8[ <cis cis'>] | <b b'>16[ <e, e'>] <fis fis'>8[ <gis gis'>] | <a a'>16[ cis'] a8 a \bar "|." } \new Staff = "LH" { %\relative c { \clef bass \key a \major \time 3/8 % tu lewa ręka e,8^\mf[ <e cis'> <e e'>] | a,[ <e a cis'> <e a cis'>] | e,[ <e cis' gis'> <e cis' gis'>] | a,[ <a cis'> <a cis'>] | e,8[ <e cis'> <e e'>] | a,[ <e a cis'> <e a cis'>] | e[ <e b e'> <e b e'>] | a,[ <a cis'> <a cis'>] | e,[ <fis cis' e'> <fis cis' e'>] | d <fis b d'>[ <fis b d'>] | e,[ <cis e fis> <cis e fis>] | <b, d fis>[ <b, fis b> <b, fis a>] | <e gis>[ <e b> <e gis>] | a,[ <e a cis> <e a cis>] | e[ <e b e'> <e b e'>] | a,[ <e a cis> <e a cis>] | e,[ <e cis'> <e gis e'> | a,[ <e a cis> <e a cis>] | e[ <e b e'> <e b e'>] | a,[ <e a cis> <e a cis>] \bar "|." } >> >> \midi{} \layout{} } </score> '''Źródło:''' {{Cytuj| autor=Wacław Zaleski | tytuł=Pieśni polskie i ruskie ludu galicyjskiego Z. 2 Nuty| inni= Karol Lipiński (muz.)| miejsce= Lwów | wydawca= F. Piller | data= 1833 | url= https://polona.pl/item/piesni-polskie-i-ruskie-ludu-galicyjskiego-z-2-nuty,NzYwOTM5MzA/110/#info:metadata | s=101–102}} == Tekst == '''Autor:''' {{Kolumny|2| <poem> Dalibóg że powiém mamie; on coś złego zrobić gotów: wzdycha, płacze, ręce łamie, klnie potęgę mych przymiotów. Nazwał serce moje lodem, wzrok sztyletem, jeszcze kłamie, że ja jego łez powodem, dalibóg że powiém mamie! W noc pod okném mém narzeka, dzień przepędza nieprzytomnie, gdy przy ludziach, to zdaleka, gdy bez ludzi, to on do mnie. Chcę nań patrzyć, czuję trwogę, chcę doń mówić, a nie umiem, chcę uciekać, a nie mogę, sama siebie nie rozumiem. Płakać muszę gdy się żali, gdy mu dłoń kładę na ramię, to mię jakiś ogień pali, dalibóg że powiém mamie. Lecz, gdy mama go połaje, on przypłacić gotów zdrowiem, albo pójdzie w cudze kraje... nie, już nic mamie nie powiém. </poem> }} '''Źródło:''' {{Cytuj| autor=Wacław Zaleski | tytuł=Pieśni polskie i ruskie ludu galicyjskiego Z. 1. Słowa| inni= Karol Lipiński (muz.)| miejsce= Lwów | wydawca= F. Piller | data= 1833 | url= https://polona.pl/item/piesni-polskie-i-ruskie-ludu-galicyjskiego-z-1-slowa,ODA5MTk3NTk/324/#info:metadata |s=263}} z drobnymi zmianami (uwspółcześnienie ortografii). == Przypisy == {{Przypisy}} == Zobacz też == {{Wikiźródła|Dalibóg że powiém mamie}} lcc3t86dhmshz4nlrlz4ljrxwme3we8 Śpiewnik/Umarł Maciek, umarł 0 58505 545902 485050 2026-06-05T08:18:18Z Persino 2851 /* Przypisy */ 545902 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Muzyka == '''Autor:''' nieznany, melodia ludowa z Mazowsza <score raw=1 vorbis=1> \version "2.20.0" \header { title = "Umarł Maciek, umarł" poet = "Słowa: autor nieznany (piosenka ludowa)" composer = "Muzyka: autor nieznany (melodia ludowa)" tagline = "" } melodia = \relative c' { \time 3/4 \tempo 4=100 \autoBeamOff e8^\mf \tempo "Moderato" fis gis4 e | a2^\< c4\! | e8 e dis4 dis | e4 e r | e,8^\mf fis gis4 e | a2^\< c4\! | e8 e dis4 dis | e4 e \fermata r | \repeat volta 2 { \grace { e8 } e4 ^\f \tempo "Allegro" \tempo 4=150 \grace { e8 } c4 e | % ^\markup { \italic Allegro } d8 d b4 d | c8 c a4 c | b8 b gis4 e | e8^\p fis gis4 e | a2^\< c4 | b2 ^\markup { \italic rall. } d4\! | c8^\> b a2\! \fermata | } } \score { \melodia \addlyrics { \small { I -- dzie Ma -- ciek, i -- dzie z_bi -- ja -- kiem za pa -- sem, Przy -- śpie -- wu -- je so -- bie da -- na, da -- na cza -- sem; A kto mu w_dro -- dze sto -- i, Te -- go pał -- ką przez łeb zło -- i. Oj ta da -- na, da -- na, da -- na, da -- na, da. } } \layout{} } \score { \unfoldRepeats \new Staff \with { midiInstrument = "flute" } { \melodia } \midi{} } </score> '''Źródło:''' {{Cytuj | autor = Stefan Surzyński | tytuł = Echo polskie T. 1. | miejsce = Tarnów | wydawca = Z. Jeleń | data = ca 1910 | url = https://polona.pl/item/echo-polskie-najwiekszy-zbior-piesni-polskich-obyczajowych-i-okolicznosciowych-z,OTIyOTA2NTE/135/#info:metadata | s = 132–133}} == Tekst == '''Autor:''' nieznany (piosenka ludowa) {{Kolumny|2| <poem> 1. Idzie Maciek, idzie Z bijakiem za pasem<ref>We współczesnych wersjach niekiedy „z fujarką za pasem”</ref>, Przyśpiewuje sobie Dana, dana czasem; ::A kto mu w drodze stoi, ::Tego pałką przez łeb złoi. ::Oj ta dana, dana, ::dana, dana, da. 2. Oj, biedaż nam, bieda, Że nasz Maciek chory. Już w karczmisku nie był Ze cztery wieczory. ::Oj, któż nam tu zaśpiewa, ::Oj, któż nam kupi piwa? ::Oj ta dana, dana i.&nbsp;t.&nbsp;d. 3. Umarł Maciek, umarł, Już leży na desce. Gdyby mu zagrali, Podskoczyłby jeszcze. ::Bo w Mazurze taka dusza, ::Gdy zagrają, to się rusza, ::Oj ta dana, dana i.&nbsp;t.&nbsp;d. 4. Umarł Maciek, umarł, Już więcej nie wstanie. Zmówmy zań pobożnie Wieczne spoczywanie. ::Oj, był to chłopak grzeczny, ::Oj, szkoda, że nie wieczny. ::Oj ta dana, dana i.&nbsp;t.&nbsp;d. 5. Położyli Maćka Na sam środek wioski, Zeszli się do niego Kmotrzy i kumoszki. ::Już nikt mu nie pomoże, ::Bo Maciek zmarł nieboże. ::Oj ta dana, dana i.&nbsp;t.&nbsp;d. <br><br> </poem> }} '''Źródło:''' {{Cytuj | autor = Stefan Surzyński | tytuł = Echo polskie T. 1. | miejsce = Tarnów | wydawca = Z. Jeleń | data = ca 1910 | url = https://polona.pl/item/echo-polskie-najwiekszy-zbior-piesni-polskich-obyczajowych-i-okolicznosciowych-z,OTIyOTA2NTE/135/#info:metadata | s = 132–133}} == Przypisy == {{Przypisy}} == Zobacz też == * ''[https://bibliotekapiosenki.pl/utwory/Idzie_Maciek Idzie Maciek]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] * ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=8526 Idzie Maciek przez wieś]'' w serwisie [http://antologia.oskarkolberg.pl/ Antologia pieśni poskich] [http://oskarkolberg.pl/ Instytutu im. Oskara Kolberga] * ''[https://staremelodie.pl/piosenka/3694/Umarl_Maciek_umarl Umarł Maciek, umarł]'' w serwisie [https://staremelodie.pl/ Stare Melodie] (m. in. wykonanie Mieczysława Fogga) qai8aqkxxvd1eqb7f73k0gzm5cu3s9u Śpiewnik/Polska młodzież niech nam żyje 0 58510 545896 428897 2026-06-05T08:01:14Z Persino 2851 /* Przypisy */ 545896 wikitext text/x-wiki == Muzyka == '''Autor:''' nieznany; melodia ludowa ''Wanda leży w naszej ziemi'' <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Cześć młodzieży polskiej" poet = "" composer = "" arranger = "" tagline = "" } \score{ << \new PianoStaff << \new Staff = "RH" \relative cis' { \clef treble \key a \major \time 2/4 \tempo 4=100 % tu prawa ręka <cis e>8^\f <e a> <a cis> <e a> | <e gis b> <e gis d'> <e b'> <e gis> | <cis e>8 <e a> <a cis> <e a> | <e gis b>4 \arpeggio <e gis e'>8 r | <cis e>8 <e a> <a cis> <e a> | <e gis b> <e gis d'> <e b'> <e gis> | <cis e>8 <e a> <a cis> <e a> | <e gis b>4 \arpeggio <e a>8 r | <gis b>8 <fis ais> <gis b> <a cis> | <gis b>8 <fis ais> <gis b> <a cis> | <gis b> <fis a> <e gis> <dis fis> | <b dis fis>4 <gis b e>8 r | <cis e>8 <e a> <a cis> <e a> | <e b'> <e d'> <e b'> <e gis> | <e a> <e cis'> <e b'> <e gis> | <e gis b>4 <cis e a>8 r \bar "|." } \addlyrics { \small { Po -- lska mło -- dzież niech nam ży -- je, Nikt jej nie prze -- sa -- dzi, Bo jej rę -- ka do -- brze bi -- je, Gło -- wa do -- brze ra -- dzi! Po -- gnę -- bie -- ni, za -- po -- mnie -- ni Od ca -- łe -- go świa -- ta, Wła -- snych ba -- li -- śmy się cie -- ni, Brat u -- ni -- kał bra -- ta. } } \new Staff = "LH" { \clef bass \key a \major \time 2/4 \tempo 4=100 % tu lewa ręka a,8^\p[ <a cis'>] e[ <a cis'>] | e,[ <gis b d'>] e[ <gis b d'>] | a,[ <a cis'>] e[ <a cis'>] | e,[ <gis b d'>] e[ <gis b d'>] | a,[ <a cis'>] e[ <a cis'>] | e,[ <gis b d'>] e[ <gis b d'>] | a,[ <a cis'>] e[ <a cis'>] | e,[ <gis b d'>] <e a cis'> r | e[ <gis b>] b,[ <gis b>] | e[ <gis b>] b,[ <gis b>] | dis[ <fis a b>] b,[ <fis a b>] | <b, fis a>4 <e, e>8 r | a,[ <a cis'>] e[ <a cis'>] | e,[ <gis b d'>] e[ <gis b d'>] | a,[ <e a cis'>] e,[ <gis b d'>] | <e, e>4 <a, a>8 r \bar "|." } >> >> \midi{} \layout{} } </score> '''Źródło:''' {{Cytuj | autor = Franciszek Barański | tytuł = Jescze Polska nie zginęła : pieśni patrjotyczne i narodowe | miejsce = Lwów ; Warszawa | wydawca = Księgarnia Polska Bernarda Połonieckiego | data = ca 1918 | url = https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 | s = s. 44 (pieśń 44) }} == Tekst == '''Autor:''' S. Dmochowski<ref>{{Cytuj | tytuł = Cześć młodzieży polskiej | praca = Cyfrowa Biblioteka Polskiej Piosenki | url = https://bibliotekapiosenki.pl/utwory/Czesc_mlodziezy_polskiej | data dostępu = 2022-05-06 }}</ref> {{Kolumny|3| <poem> 1. Polska młodzież niech nam żyje! Nikt jej nie przesadzi, Bo jej ręka dobrze bije, Głowa nieźle radzi. ::Pognębieni, zapomnieni ::Od całego świata, ::Własnych baliśmy się cieni ::Brat unikał brata. 2. Ledwie polskie bronie błysły, Polskie wstały dzieci! Więzy nasze jak szkło prysły, Złota wolność świeci. ::Każdy dzień żołnierzy rodzi. ::Mnożą się obrońce: ::Świetna zorza! Po niej wschodzi ::Najświetniejsze słońce! – 3. Niech do boju każdy biegnie! Piękne tam skonanie: Za jednego, który legnie, Sto mścicieli stanie. ::Zawsze Polak miał nadzieję ::W mocy niebios Pana; ::On w nas jedność, zgodę wleje, ::A przy nas wygrana. </poem> }} '''Źródło:''' {{Cytuj | autor = Franciszek Barański | tytuł = Jescze Polska nie zginęła : pieśni patrjotyczne i narodowe | miejsce = Lwów ; Warszawa | wydawca = Księgarnia Polska Bernarda Połonieckiego | data = ca 1918 | url = https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 | s = s. 49 (pieśń 44) }} == Przypisy == {{Przypisy}} == Zobacz też == * ''[https://bibliotekapiosenki.pl/utwory/Czesc_mlodziezy_polskiej Cześć młodzieży polskiej]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] k38ik6h10k4j06tu0fpz1v5m4b1d953 Śpiewnik/Gdy się Chrystus rodzi 0 58511 545888 428913 2026-06-05T07:38:30Z Persino 2851 /* Przypisy */ 545888 wikitext text/x-wiki [[Plik:Gdy_się_Chrystus_rodzi.ogg|thumb|250px|'''''Gdy się Chrystus rodzi''''' w wykonaniu '''[[:commons:File:BGdy_się_Chrystus_rodzi.ogg|artystów Studia Accantus]]'''. Śpiewają '''Katarzyna Sawczuk, Kuba Jurzyk, Wiktor Korszla, Magdalena Wasylik, Natalia Piotrowska''' i '''Sylwia Banasik'''. Aranżacja muzyczna: '''Marcin Kuczewski'''. Reżyseria i realizacja nagrań, miks i mastering: '''Bartłomiej Kozielski - Studio Accantus'''. Autorzy muzyki i słów nieznani. ©: '''Stowarzyszenie Wikimedia Polska'''. Zezwala się na korzystanie z utworu na warunkach licencji '''Creative Commons Uznanie autorstwa 3.0 PL''', dostępnej pod adresem https://creativecommons.org/licenses/by/3.0/pl/]] == Muzyka == '''Autor:''' nieznany (przed 1843)<br> Aranżacja: Franciszek Barański (ur. 1855) <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Gdy się Chrystus rodzi" poet = "Słowa: autor nieznany" composer = "Muzyka: autor nieznany" arranger = "Aranżacja: Franciszek Barański" tagline = "" } \score{ \new PianoStaff << \new Staff = "RH" \with { midiInstrument = "oboe" } \relative c'' { \clef treble \key es \major \time 4/4 \tempo 4=100 \autoBeamOff % tu prawa ręka <g bes>4 <es g> <es es'> <es c'> | <es c'>( <es bes'>) <es bes'>2 | <es g>4 <es g> <c as'>4. <c f>8 | <d f>4( <bes es>) <bes es>2 | <g' bes>4 <es g> <es es'> <es c'> | <es c'>( <es bes'>) <es bes'>2 | <es g>4 <es g> <c as'>4. <c f>8 | <d f>4( <bes es>) <bes es>2 | <d f>4^\markup { \italic {un poco piú mosso } } <d f> <f as> <d f> | <es g> <es g> <g bes>4. <es g>8 | <d f>4 <d f> <f as> <d f> | <es g> <es g> <g bes>4. <es g>8 | <es g bes>4. <es g bes>8 <es g bes>2 | <c as' c>4. <c as' c>8 <c as' c>2 | <f as d>4. <f as d>8 <f as d>2 | <es g es'>4 <es g bes> <c as' c> <c f as> | <es g>2( <d f>) | <bes es>2 r \bar "|." } \addlyrics { Gdy się Chry -- stus ro -- dzi i na świat przy -- cho -- dzi, cie -- mna noc w_ja -- sno -- ściach pro -- mie -- ni -- stych bro -- dzi. A -- nio -- ło -- wie się ra -- du -- ją, pod nie -- bio -- sa wy -- śpie -- wu -- ją: Glo -- ri -- a, glo -- ri -- a, glo -- ri -- a in ex -- cel -- sis De -- o! } \new Staff = "LH" \with { midiInstrument = "cello" } { \clef bass \key es \major \time 4/4 \tempo 4=100 \autoBeamOff % tu lewa ręka <es bes>4 <es bes> <as c'> <as c'> | <as c'> <g bes> <g bes>2 | <c c'>4 <c g> <f, f> <as, f> | <bes, as> <es g> <es g>2 | <es bes>4 <es bes> <bes, g> <c g> | <es as> <es g> <es g>2 | <c c'>4 <c g> <f, f> <as, f> | <bes, as> <es g> <es g>2 | bes,4 <f as> <f as> <f as> | es <g bes> <g bes> <g bes> | bes,4 <f as> <f as> <f as> | es <g bes> <g bes> <g bes> | <es g bes>4. <es g bes>8 <es g bes>2 | <as, es g>4. <as, es g>8 <as, es g>2 | <bes, f bes>4. <bes, f bes>8 <bes, f bes>2 | <es g bes>4 <es g bes> <as, es as> <f, f> | <bes, g>2 <bes, as> | <es g>2 r \bar "|." } >> \layout{} \midi{} } </score> '''Źródło:''' {{Cytuj | autor = Franciszek Barański | tytuł = W dzień Bożego Narodzenia : kolędy. Cz. 1, Muzyka. Cz. 2, Słowa | miejsce = Lwów | wydawca = Księgarnia Polska B. Połonieckiego | data = [1927] | url = https://polona.pl/item/w-dzien-bozego-narodzenia-koledy-cz-1-muzyka-cz-2-slowa,ODY3NTMwMzQ/16/#info:metadata | s = s. 15 (pieśń 18) }} == Tekst == '''Autor:''' nieznany (przed 1843) {{Kolumny|2| <poem> 1. Gdy się Chrystus rodzi I na świat przychodzi, Ciemna noc w jasnościach Promienistych brodzi. ::Aniołowie się radują, ::Pod niebiosa wykrzykują: ::Gloria, gloria, gloria ::In excelsis Deo! 2. Mówią to pasterze<ref>W większości wersji: ''Mówią do pasterzy''.</ref>, Którzy trzód swych strzegli, Aby do Betlejem Czemprędzej pobiegli, ::Bo się narodził Zbawiciel, ::Wszego świata Odkupiciel, ::Gloria, gloria, gloria ::In excelsis Deo! 3. O niebieskie duchy I posłowie nieba, Powiedzcież wyraźniej, Co nam czynić trzeba? ::Bo my nic nie pojmujemy, ::Ledwo od strachu żyjemy, ::Gloria, gloria, gloria ::In excelsis Deo! 4. Idźcie do Betlejem, Gdzie Dziecię zrodzone, W pieluszki spowite, W żłobie położone. ::Oddajcie Mu pokłon boski, ::On osłodzi wasze troski; ::Gloria, gloria, gloria ::In excelsis Deo! 5. A gdy pastuszkowie Wszystko zrozumieli, Zaraz do Betlejem Spiesznie pobieżeli. ::I tam wszystko tak zastali, ::Jak im anieli zeznali, ::Gloria, gloria, gloria ::In excelsis Deo! 6. Stanąwszy na miejscu, Pełni zadumienia, Iż się Bóg tak zniżył Do swego stworzenia, ::Padli przed Nim na kolana ::I uczcili swego Pana, ::Gloria, gloria, gloria ::In excelsis Deo! 7. Nareszcie, gdy pokłon Panu już oddali, Z wielką wesołością Do swych trzód wracali; ::Że się stali być godnymi ::Boga widzieć na tej ziemi, ::Gloria, gloria, gloria ::In excelsis Deo! </poem> }} '''Źródło:''' {{Cytuj | autor = Franciszek Barański | tytuł = W dzień Bożego Narodzenia : kolędy. Cz. 1, Muzyka. Cz. 2, Słowa | miejsce = Lwów | wydawca = Księgarnia Polska B. Połonieckiego | data = [1927] | url = https://polona.pl/item/w-dzien-bozego-narodzenia-koledy-cz-1-muzyka-cz-2-slowa,ODY3NTMwMzQ/75/#info:metadata | s = s. 22 (pieśń 18) }} == Przypisy == {{Przypisy}} == Zobacz też == {{Wikipedia|Gdy się Chrystus rodzi}} {{Wikiźródła|Gdy się Chrystus rodzi}} {{Projekt siostrzany | projekt = commons | tekst = [[w:Wikimedia Commons|Wikimedia Commons]] ma listę nagrań '''[[commons:Polish Christmas carols|polskich kolęd]]''' na wolnych licencjach}} * ''[https://bibliotekapiosenki.pl/utwory/Gdy_sie_Chrystus_rodzi Gdy się Chrystus rodzi]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] * ''[https://www.koledypolskie.pl/koleda/gdy-sie-chrystus-rodzi/ Gdy się Chrystus rodzi]'' w serwisie [https://www.koledypolskie.pl/koleda/gdy-sie-chrystus-rodzi/ Kolędy polskie] * [http://spiewniksiedleckiego.pl/?page_id=252 Pieśni na Narodzenie Pańskie] w serwisie [http://spiewniksiedleckiego.pl/ Śpiewnik Siedleckiego] 2m0bp711jhksm3ehd8qkokacnykq7zu Śpiewnik/W ogrodzie na wodzie 0 58513 545904 428956 2026-06-05T08:23:34Z Persino 2851 /* Przypisy */ 545904 wikitext text/x-wiki == Muzyka == '''Autor:''' nieznany (melodia ludowa)<br> <score raw=1 vorbis=1> \version "2.20.0" \header { title = "W ogrodzie na wodzie" poet = "Słowa: autor nieznany (piosenka ludowa)" composer = "Muzyka: autor nieznany (melodia ludowa)" tagline = "" } \score{ \new Staff \with { midiInstrument = "fiddle" } { \relative c'' { \key f \major \time 3/8 \tempo 4=100 \autoBeamOff c8 c a | bes bes g | a a bes | g f4 | g16 g g a bes8 | g f f | g16 g g a bes8 | g f f | a4 a8 | \cadenzaOn a bes c \fermata s8 \cadenzaOff \bar "|" c4 a8 | c4 a8 | a bes c | a4 c8 | \cadenzaOn bes g e s8 \cadenzaOff \bar "|" g g f | g16 a bes8 g | a a16 a a8 | a16 bes g8 f | c'16 c bes8 g | f4 r8 | } } \addlyrics { W_o -- gro -- dzie na wo -- dzie Dro -- bny deszcz pa -- da. Grze -- czna pan -- na go zbie -- ra -- ła, Ma -- tka na nią za -- wo -- ła -- ła: Chce -- szli ko -- wa -- la? Nie chcę, nie chcę, nie we -- zmę, Nie chcę ko -- wa -- la! Bo ko -- wal ku -- je mło -- tem, A to nie jest wie -- le po -- tem, Nie chcę ko -- wa -- la! } \layout{} \midi{} } </score> '''Źródło:''' {{Cytuj | autor = Nadwiślanin | tytuł = Śpiewnik dla przemysłowców | miejsce = Gniezno | wydawca = J. B. Langie | data = [ca 1895] | url = https://polona.pl/item/spiewnik-dla-przemyslowcow,OTM4NTAxNzg/70/#info:metadata | s = 65–66}} == Tekst == '''Autor:''' nieznany (piosenka ludowa)<br> {{Kolumny|2| <poem> 1. W ogrodzie na wodzie Drobny deszcz pada. Grzeczna panna go zbierała, Matka na nią zawołała: Chceszli kowala? ::Nie chcę, nie chcę, nie wezmę, ::Nie chcę kowala! ::Bo kowal kuje młotem, ::A to nie jest wiele potem, ::Nie chcę kowala! 2. W ogrodzie na wodzie i t. d. Chceszli bednarza? ::Nie chcę, nie chcę, nie wezmę, ::Nie chcę bednarza! ::Bo bednarczyk siedzi w dziurze, ::Obręczyska zawsze struże, ::Nie chcę bednarza! 3. W ogrodzie na wodzie i t. d. Chceszli owczarza? ::Nie chcę, nie chcę, nie wezmę, ::Nie chcę owczarza! ::kiey byłam małą dziewką, ::To mnie oprał owczarz laską, ::Nie chcę owczarza! 4. W ogrodzie na wodzie i t. d. Chceszli mularza? ::Nie chcę, nie chcę, nie wezmę, ::Nie chcę mularza! ::Bo mularz piec muruje, ::Z kupy mu się rozlatuje, ::Nie chcę mularza! 5. W ogrodzie na wodzie i t. d. Chceszli młynarza? ::Nie chcę, nie chcę, nie wezmę, ::Nie chcę młynarza! ::Kieby nie ludzkie otręby, ::Wyszczerzałby młynarz zęby, ::Nie chcę młynarza! 6. W ogrodzie na wodzie i t. d. Chceszli krawczykaa? ::Nie chcę, nie chcę, nie wezmę, ::Nie chcę krawczyka! ::Bo krawiec szyje igłą, ::A ja se rada igrom, ::Nie chcę krawczyka! 7. W ogrodzie na wodzie i t. d. Chceszli szewczyka? ::Nie chcę, nie chcę, nie wezmę, ::Nie chcę szewczyka! ::Bo u szewca wszystko bydło: ::Dwa kopyta, jedno szydło, ::Nie chcę szewczyka! 8. W ogrodzie na wodzie i t. d. Chceszli pisarza? ::Toć chcę, toć chcę, toć wezmę, ::Toć chcę pisarza! ::Bo pisarz pisze listy, ::Jest u niego piętak<ref>Piętak – drobny pieniądz</ref> isty, ::Toć chcę pisarza! <br> </poem> }} '''Źródło:''' {{Cytuj | autor = Nadwiślanin | tytuł = Śpiewnik dla przemysłowców | miejsce = Gniezno | wydawca = J. B. Langie | data = [ca 1895] | url = https://polona.pl/item/spiewnik-dla-przemyslowcow,OTM4NTAxNzg/70/#info:metadata | s = 65–66}} == Przypisy == {{Przypisy}} == Zobacz też == {{Wikiźródła|W ogrodzie na wodzie}} ec99vme0nqiff9f4dgxcm03nu6lyauz Moduł:StronicowyParser/SpisTreści 828 58945 545803 544613 2026-06-04T12:54:00Z Persino 2851 545803 Scribunto text/plain local p={}; local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow) local parametry_modul=require("Module:Parametry"); local ile=0; for i,tabela_rozdzial_artykulow_i in pairs(tabela_rozdzial_artykulow)do i=parametry_modul.TypeNumber(i) and i or nil; if((i)and(i>1))then ile=ile+#(tabela_rozdzial_artykulow_i or {}); end; end; return ile; end; local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,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_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=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); --- local numer_rodzaju_artykulu_poprz=numer_rodzaju_artykulu; if(numer_rodzaju_artykulu)then --mw.log(szablon,numer_rodzaju_artykulu,wliczaj_artykuly_tego_rozdzialu) numer_rodzaju_artykulu=(wliczaj_artykuly_tego_rozdzialu)and numer_rodzaju_artykulu or (numer_rodzaju_artykulu+6); end; --- --Rozdzialy początek local znaki_niedozwolone; local function ParametrPierwszy(tab_artykul,czy_niedozwolone) local artykul=tab_artykul[1]; local parametry=tab_artykul[2]; local naglowek=tab_artykul[3]; local tablica_przekierowania=tab_artykul[4]; ---- local znaki_niedozwolone; if(czy_niedozwolone)then znaki_niedozwolone=mw.ustring.match(artykul,"[|<>{}%[%]]"); end; ---- --if(artykul)then --artykul=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(artykul,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); --artykul=parametry_modul["Odstępy"]{[1]=artykul,[2]="tak",} --artykul=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](artykul); --end; ---- --if(parametry)then -- parametry=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(parametry,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) -- parametry=parametry_modul["Odstępy"]{[1]=parametry,[2]="tak",} -- parametry=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](parametry); --end; ---- --if(naglowek)then -- naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); -- naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",} -- naglowek=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](naglowek); --end; ---- tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul; return tab_artykul,znaki_niedozwolone,tablica_przekierowania; end; local parametry_modul=require("Module:Parametry"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych; local szablony_rozwijane_przez_javascript_nazwowe_linkowe=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_nazwowe_linkowe; ---- local function RozwijanieNazwy(szablon,obiekt,kod) if(obiekt=="SZABLON")then local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(not wynik)then local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(szablony_rozwijane_przez_javascript_nazwowe_linkowe[nazwa_szablonu])then local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or "")); return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; end); if(wynik)then return wynik;end; end; end); return szablon,true; elseif(nazwa_szablonu=="Br")then return " ",false; elseif( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or "")); return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true),true; end; end); if(wynik)then return wynik,jaki_wynik;end; else return wynik,false; end; return nil,true; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="br")then return " "; end; end; return szablon; end; if((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz==1)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1; local czy_tablica=nil;local tablica_przekierowania=nil; if(tab_pozycja_elementow_w_spisie_rzeczy[1])then czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); if(not czy_tablica)then --tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); --tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",} --tab_pozycja_elementow_w_spisie_rzeczy[1]=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tab_pozycja_elementow_w_spisie_rzeczy[1]); znaki_niedozwolone=mw.ustring.match(tab_pozycja_elementow_w_spisie_rzeczy[1],"[|<>{}%[%]]"); tablica_artykulow_zebranych={tab_pozycja_elementow_w_spisie_rzeczy[1],0,false,}; else tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true); local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil; if(not czy_inna_ksiazka)then czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); else local artykul=tablica_przekierowania[2]; local parametry=tablica_przekierowania[3]; local naglowek=tablica_przekierowania[4]; czy_tablica=(artykul)and(parametry or naglowek); end; if(not czy_tablica)then local aktualny_artykul_ksiazki; if(not czy_inna_ksiazka)then aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1]; else aktualny_artykul_ksiazki=tablica_przekierowania[2] or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]); end; tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; else local aktualny_artykul_ksiazki; if(not czy_inna_ksiazka)then aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1][1]; else aktualny_artykul_ksiazki=tablica_przekierowania[2] or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]); end; if(tablica_artykulow_zebranych[1]~=aktualny_artykul_ksiazki)then tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; else tablica_artykulow_zebranych[3]=true; end; end; end; end; ---- local szablonowe_modul=require("Module:Szablonowe"); ---- if(tab_pozycja_elementow_w_spisie_rzeczy[2])then local czy_szablon_wszystko=false; tab_pozycja_elementow_w_spisie_rzeczy[2]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[2],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) local wynik,czy_szablon=RozwijanieNazwy(szablon,obiekt,kod); czy_szablon_wszystko=czy_szablon_wszystko or czy_szablon; return wynik; end); if(czy_szablon_wszystko)then local frame=mw.getCurrentFrame(); tab_pozycja_elementow_w_spisie_rzeczy[2]=frame:preprocess(tab_pozycja_elementow_w_spisie_rzeczy[2]); end; local specjalne_modul=require("Module:Specjalne"); tab_pozycja_elementow_w_spisie_rzeczy[2]=specjalne_modul["UsuńZnakiSpecjalne"](tab_pozycja_elementow_w_spisie_rzeczy[2]); tab_pozycja_elementow_w_spisie_rzeczy[2]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[2],[2]="tak",[4]="tak",}; end; ---- if(znaki_niedozwolone)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"); end; end; local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false); local stara_nazwa_jednostki=nazwa_jednostki; if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end; --local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]]; linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); --local przekierowanie=pelna_nazwa_ksiazki..((nazwa_jednostki~="") and ("/"..nazwa_jednostki) or ""); --local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie); --local strona=(tablica_przekierowania) local przekierowanie; if(--[[strona--]]tablica_przekierowania)then --nazwa_jednostki=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona); --przekierowanie=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie) przekierowanie=tablica_przekierowania[2]; if((czy_tablica)and(stara_nazwa_jednostki~=""))then przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,} or przekierowanie ) or nil; nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,}; local czy_w_tab=tablica_artykulow_zebranych[2]; local czy_wsadzac=tablica_artykulow_zebranych[3]; if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,}; --table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); tablica_artykulow_zebranych[2]=1; end; end; else nazwa_jednostki=tab_pozycja_elementow_w_spisie_rzeczy[1]; if((czy_tablica)and(stara_nazwa_jednostki~=""))then local czy_w_tab=tablica_artykulow_zebranych[2]; local czy_wsadzac=tablica_artykulow_zebranych[3]; if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,}; --table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); tablica_artykulow_zebranych[2]=1; end; end; end; local ile_dodac_do_poziomu_artykulu=tablica_artykulow_zebranych[2]; local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil; local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[2] or tablica_przekierowania or tab_pozycja_elementow_w_spisie_rzeczy[5] or tab_pozycja_elementow_w_spisie_rzeczy[6] or ile_dodac_do_poziomu_artykulu_lub_nil) and ({nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],ile_dodac_do_poziomu_artykulu_lub_nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or nazwa_jednostki),{#przedrostek_listy--[[+(ile_dodac_do_poziomu_artykulu and ile_dodac_do_poziomu_artykulu or 0)]],przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,(numer_rodzaju_artykulu>1) and (Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)) or nil,}; --table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); --mw.logObject(tab_stare,"TYTAN1") __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); --mw.logObject(tabela_rozdzial_artykulow,"TYTAN2") elseif((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz>=2)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then if(tab_pozycja_elementow_w_spisie_rzeczy[1])then if(not parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]))then --tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",}; --tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); else tab_pozycja_elementow_w_spisie_rzeczy[1]=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],false); end; end; local szablonowe_modul=require("Module:Szablonowe"); if(tab_pozycja_elementow_w_spisie_rzeczy[2])then local czy_szablon_wszystko=false; tab_pozycja_elementow_w_spisie_rzeczy[2]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[2],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) local wynik,czy_szablon=RozwijanieNazwy(szablon,obiekt,kod); czy_szablon_wszystko=czy_szablon_wszystko or czy_szablon; return wynik; end); if(czy_szablon_wszystko)then local frame=mw.getCurrentFrame(); tab_pozycja_elementow_w_spisie_rzeczy[2]=frame:preprocess(tab_pozycja_elementow_w_spisie_rzeczy[2]); end; local specjalne_modul=require("Module:Specjalne"); tab_pozycja_elementow_w_spisie_rzeczy[2]=specjalne_modul["UsuńZnakiSpecjalne"](tab_pozycja_elementow_w_spisie_rzeczy[2]); tab_pozycja_elementow_w_spisie_rzeczy[2]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[2],[2]="tak",[4]="tak",}; end; if(tab_pozycja_elementow_w_spisie_rzeczy[3])then tab_pozycja_elementow_w_spisie_rzeczy[3]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[3],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); tab_pozycja_elementow_w_spisie_rzeczy[3]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[3],[2]="tak",[4]="tak",}; end; if(tab_pozycja_elementow_w_spisie_rzeczy[4])then tab_pozycja_elementow_w_spisie_rzeczy[4]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[4],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); tab_pozycja_elementow_w_spisie_rzeczy[4]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[4],[2]="tak",[4]="tak",}; end; local wiki_modul=require("Module:Wiki"); ----- local numer_rodzaju_artykulow_w_nie_podreczniku=numer_rodzaju_artykulu+1; ----- if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku]={}; end; --local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]]; linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[1])and((tab_pozycja_elementow_w_spisie_rzeczy[2])or(tab_pozycja_elementow_w_spisie_rzeczy[3])or(tab_pozycja_elementow_w_spisie_rzeczy[4])or(tab_pozycja_elementow_w_spisie_rzeczy[5])or(tab_pozycja_elementow_w_spisie_rzeczy[6])))and({tab_pozycja_elementow_w_spisie_rzeczy[1],tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[3],tab_pozycja_elementow_w_spisie_rzeczy[4],tab_pozycja_elementow_w_spisie_rzeczy[5],nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or tab_pozycja_elementow_w_spisie_rzeczy[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,false,Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow),}; --table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); end; --mw.logObject(tabela_rozdzial_artykulow,"TYTAN") return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych; end; function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local specjalne_modul=require("Module:Specjalne"); local szablonowe_modul=require("Module:Szablonowe"); local html_modul=require("Module:Html"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_na_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then ----- local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu; local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych; local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu; ----- local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; ---- local dodatek=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(dodatek)then return dodatek;end; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then return (not tab_szablon_link_intelignetny[4]) and tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1]; else local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end; end; local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end; ---- if(szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu[nazwa_szablonu])then local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); return szablon; end; end); if(wynik)then return wynik;end; ---- local rozdzial_na_tekst=mw.ustring.gsub(szablon,"^{{[^{}|]*|([^{}|]*).*}}$","%1"); return rozdzial_na_tekst; elseif(obiekt=="NOWIKI")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif(obiekt=="PRE")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif(obiekt=="ŹRÓDŁO")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif((obiekt~="MATH")and(obiekt~="GALERIA")and(obiekt~="MAPAOBRAZU")and(obiekt~="INNEPRE"))then local rozdzial_na_tekst=specjalne_modul["UsuńKomentarze"](szablon); rozdzial_na_tekst=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńSzablonyStylów"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZnaczniki"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńKategorie"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńWywołaniaPlików"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńInterwiki"](rozdzial_na_tekst); --rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst); return rozdzial_na_tekst; else return ""; end; end); ---- rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZbędneBiałeZnaki"](rozdzial_na_tekst); return rozdzial_na_tekst; end; function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH) local parametry_modul=require("Module:Parametry"); if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki))then return 0;end; local nazwy_modul=require("Module:Nazwy"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_modulu=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and("/"..nazwa_spisu_tresci) or ""); --- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci) and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) or nil; local pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil; --- local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); local przekierowanie_spisu_tresci=nil; local tab_nazwa_spisow_przekierowaniowych={}; --[[if(adres_ksiazki_glownego_spisu_tresci)then if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end; end;]] --if(adres_ksiazki_glownego_spisu_tresci)then -- local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; -- local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; -- local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end; -- end; if(strona)then local html_modul=require("Module:Html"); strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; local pelna_nazwa_ksiazki_przekierowania=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(pelna_nazwa_ksiazki_przekierowania~=pelna_nazwa_ksiazki)then return 0;end; nazwa_modulu=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); nazwa_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); przekierowanie_spisu_tresci=nazwa_spisu_tresci; ---- pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci) and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) or nil; pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil; end; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); --local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,true); local __FUNKCJA_PARAMETRY=nil; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(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); if(not tekst_rozwiniety_calego_artykulu)then return 0;end; if(__FUNKCJA_ZBIERANIA_DANYCH)then __FUNKCJA_ZBIERANIA_DANYCH(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; ---- local techniczne_modul=require("Module:Techniczne"); ---- local tabelalisty2=nil; local licencja_z_autorem=true; local tabela_artykulow=nil; local tabela_licencji_spisu_tresci=nil; local parametry_modul=require("Module:Parametry"); local html_modul=require("Module:Html"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; local szablony_kompletowania_stron_woluminu=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu; local szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji; local szablony_ozdobne_stron_woluminu=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") --[[local pelna_nazwa_spisu_tresci_wzor="^("..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or "") ..techniczne_modul["WzórNazwyStrony"](((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki) ..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "") .."(/[Ss][Pp][Ii][Ss][%s_]+[Tt][Rr][Ee][ŚśSs][Cc][Ii]))$";]] --local tablica_analizy_obiektow_strony_dany_modul={}; --local tablica_danych_parametrow_szablonu_strony={}; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,--[[function(pelna_nazwa_szablonu,tabela_modyfikatorow) local pelna_nazwa_spisu_tresci,strona_ze_spisem_tresci=mw.ustring.match(pelna_nazwa_szablonu,pelna_nazwa_spisu_tresci_wzor); if(pelna_nazwa_spisu_tresci and strona_ze_spisem_tresci)then pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); if(tekst)then ---- if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end; if(not tablica_ksiazki.spis_tresci[nazwa_spisu_tresci])then tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]={};end local tablica_spis_tresci=tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]; tablica_spis_tresci.tekst=tekst; tablica_spis_tresci.adres_wzgledny_spisu_tresci=strona_ze_spisem_tresci; ---- return tekst; end; end; end]]nil,function(str,pelna_nazwa_strony,tablica_analizy_dany_modul,czy_naglowek) local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod) if(obiekt=="SZABLON")then ---- local bez_kodow=not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()); if(bez_kodow)then return;end; ---- local function PomijajLinkiOrazLicencje(szablon) return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]; if(czy_szablony_licencji)then return true;end; local czy_szablony_ozdobne=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu[nazwa_szablonu]; if(czy_szablony_ozdobne)then return true;end; --local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); --local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu); --if(wynik)then return wynik;end; ---- if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]))then return true;end; local tab_wyzyskane_od_nazwy_szablonu=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_wyzyskane_od_nazwy_szablonu)then return true;end; end); end; ---- local CzySzablonLinkLubLicencja=function(szablon) local ile_szablon_linki_lub_licencje=0; local _,ile=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("(SZABLON)"), function(obiekt,kod) kod=tonumber(kod); local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=PomijajLinkiOrazLicencje(szablon); if(wynik)then ile_szablon_linki=ile_szablon_linki+1;end; return nil; end); if((ile>0)and(ile_szablon_linki_lub_licencje>0))then return true;end; end; local bez_kodow_linkow_wewnetrznych=( not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINK[WZ]")) and not CzySzablonLinkLubLicencja(szablon) ) or not mw.ustring.match(szablon,"\n([#:*;]+)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)") or not mw.ustring.match(szablon,"\n([#:*;]*)[^%S\n]*([%w%p]+)[^%S\n]*([^\n]+)"); if(bez_kodow_linkow_wewnetrznych)then return;end; local wynik=PomijajLinkiOrazLicencje(szablon); if(wynik)then return;end; ----- return ""; --[[elseif(obiekt=="WIKITABELA")then szablon=mw.ustring.match(szablon,"^{|(.-)|}$"); szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|[%-%+][^%S\n]+[^|\n]*","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|%-","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|%+","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|","\n\n"); return szablon;]] end; return; end; if(not czy_naglowek)then str=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_strony,tablica_analizy_dany_modul,function(szablon,obiekt,kod) local wynik=FunkcjaIteratoraTekstuZakodowego(szablon,obiekt,kod); if(wynik)then return wynik;end; return nil,true; end); return str; end; return str; end,function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_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 stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_jakie_nie_rozdzialy=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu; local jakie_nie_rozdzialy=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_nie_rozdzialy); local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_nie_rozdzialy,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); local numer_rozdzialu_w_ksiazce=1; local parametry_modul=require("Module:Parametry"); local html_modul=require("Module:Html"); local szablonowe_modul=require("Module:Szablonowe"); local tab_dozwolonych_szablonow_z_elementami_spisu_artykulow=stronicowyparser_obiekty_modul.tab_dozwolonych_szablonow_z_elementami_spisu_artykulow; local czy_jest_spis_tresci=nil; local poziom_spisu_tresci=nil; local dalej_nie_rozwazaj_spis_tresci=nil; local wliczaj_artykuly_tego_rozdzialu=nil; local specjalne_modul=require("Module:Specjalne"); local tablica_artykulow_zebranych={}; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); ---- --local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu; --local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu; ---- local maksymalny_rozmiar_rozdzialu_zerowego=50; local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany) --rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1"); --if(poziom_rozdzialu)then -- text=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(text,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); --end; if(not tabela_artykulow)then tabela_artykulow={};end; local spreparowany_uzyskany_tekst_rozdzialu=nil; ---- local tabela_rozdzial_artykulow; if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then tabela_artykulow[numer_rozdzialu_w_ksiazce]={}; ---- tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce]; ---- local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,}; spreparowany_uzyskany_tekst_rozdzialu=rozdzial_na_tekst; end; local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]); if(czy_spis_rzeczy_napis_wprowadzenia_tekstu)then poziom_spisu_tresci=poziom_rozdzialu; czy_jest_spis_tresci=true; elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then if((((poziom_spisu_tresci>0)and(poziom_rozdzialu>0))or((poziom_spisu_tresci<=0)and(poziom_rozdzialu<=0)))and(math.abs(poziom_spisu_tresci or 0)<math.abs(poziom_rozdzialu)))then wliczaj_artykuly_tego_rozdzialu=true; else wliczaj_artykuly_tego_rozdzialu=nil; dalej_nie_rozwazaj_spis_tresci=true; end; end; local function iteratorTekstuNaglowka() local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)"; local iter=nil; local tak=nil; local czy_rozdzial=nil; return function() if(not czy_rozdzial)then if((poziom_rozdzialu or 0)>0)then if(not iter)then iter=mw.ustring.gmatch(rozdzial,"([^\n]+)"); end; local wartosc=iter(); if(not wartosc)then czy_rozdzial=true; iter=nil; else return "","",wartosc,true; end; else czy_rozdzial=true; end; end; local function dane_iteratora() if(not iter)then iter=mw.ustring.gmatch(text,"\n"..re); end; local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=iter(); if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci); return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false; else return nil; end; end; if(not tak)then tak=true; local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=mw.ustring.match(text,"^"..re); if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci); return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false; else return dane_iteratora(); end; end; return dane_iteratora(); end; end; ---- local function LiniaArtykulow(linia) local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod=iter(); if((not szablon) or (not kod) or(not obiekt))then return {};end; local function SzablonAnalizujKompletnosc(szablon) ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- return stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu[nazwa_szablonu]; end); return wynik; end; ----- local tak_pierwsze=((obiekt=="SZABLON") and SzablonAnalizujKompletnosc(szablon) or nil); ----- for szablon,obiekt,kod in iter do if(obiekt=="SZABLON")then local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local tak_drugie=SzablonAnalizujKompletnosc(szablon); if(tak_pierwsze)then if(tak_drugie)then linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")(%s*)("..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")","%1,%2%3"); end; else if(tak_drugie)then linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")(%s*)(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")","%1,%2%3"); end; end; end; end; local tabela_linii_artykulow=mw.text.split(linia,"%s*,%s*",false); for i=1,#tabela_linii_artykulow,1 do tabela_linii_artykulow[i]=mw.ustring.gsub(tabela_linii_artykulow[i],"&#"..mw.ustring.byte(',')..";",","); end; return tabela_linii_artykulow; end; local iterator=iteratorTekstuNaglowka(); local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial])); for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do local nie_pomijaj_tego_rozdzialu=false; if((not przedrostek_listy)or(#przedrostek_listy==0))then local rozdzial,czy_z_kropka=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(((rozdzial)and(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego))or(not rozdzial))then nie_pomijaj_tego_rozdzialu=true; end; else local czy_pominac_ten_rozdzial_jako_linie=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrostek_listy,linia,true,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(not czy_pominac_ten_rozdzial_jako_linie)then nie_pomijaj_tego_rozdzialu=true; else nie_pomijaj_tego_rozdzialu=false; end; end; if(nie_pomijaj_tego_rozdzialu)then local ile=0; local linia_rozwazana=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(linia,nil ,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod--[[,czy_sam_siebie]]) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- local czy_link=linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu] or inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu] or stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu ,tablica_danych_parametrow_szablonu_strony,kod); local czy_szablon=czy_link or szablony_kompletowania_stron_woluminu[nazwa_szablonu] or szablony_licencji[nazwa_szablonu] --or szablony_ozdobne_stron_woluminu[nazwa_szablonu]; if(czy_link)then ile=ile+1;end; return czy_szablon,obiekt,kod; end); elseif(obiekt=="LINKW")then if(specjalne_modul["CzyLinkWewnętrzny"](szablon))then ile=ile+1; return true,obiekt,kod; end; elseif(obiekt=="LINKZ")then ile=ile+1; return true,obiekt,kod; end; end); ---- local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$"); local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$") or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$")))) or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil); ---- local nowa_linia=false; local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana) return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare) --if((czy_spis_rzeczy_napis_wprowadzenia_tekstu)and(numer_podtablicy_w_tablicy>2))then return;end; if((czy_rozdzial_centrowany)and(w_rozdziale)and(czy_linia_uwzgledniana)and(tab_stare[2])and(tab_stare[2][1]))then tab_stare[2][1]=tab_stare[2][1]+1; end; if(not w_rozdziale)then local function CzyZaliczac() return ((not mw.ustring.match(linia,"^%w+%p+")) and mw.ustring.match(linia,"^%s*'*%s*%w+")); --or mw.ustring.match(linia,"^%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKZ")); end; if(nowa_linia)then tab_stare[2][4]=true; table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); elseif(((poziom_rozdzialu)or(#(przedrostek_listy or "")>0))and((ile>1)or(CzyZaliczac())))then nowa_linia=true; numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1; tabela_artykulow[numer_rozdzialu_w_ksiazce]={}; tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce]; ---- local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,}; tab_stare[2][4]=true; tab_stare[6]=(numer_podtablicy_w_tablicy>2) and 0 or nil; tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy]={}; table.insert(tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy],tab_stare); else table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); end; else table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); end; end; end; local function AnalizaLiniiObiekty(linia_rozwazana) local tab_linia=LiniaArtykulow(linia_rozwazana); for k=1,#tab_linia,1 do local iterator2=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tab_linia[k],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); local tab_nieobslugiwane=nil; for szablon,obiekt,kod in iterator2 do local czy_szablon=(obiekt=="SZABLON");local czy_link=((obiekt=="LINKW")or(obiekt=="LINKZ")); if(czy_szablon or czy_link)then local przerwij=nil; if(czy_szablon)then ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu ,tabela_modyfikatorow) ---- --local przerwij=nil; local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then if(tabela_spisu[1]==true)then --local tabela_parametrow_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil ,tablica_danych_parametrow_szablonu_strony,kod); local numer_link=tabela_spisu["numer_link"]; for name,value in pairs(tabela_parametrow_szablonu)do if(name~=numer_link)then local kod_w_nie_obslugiwanych=tabela_parametrow_szablonu[name]; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(kod_w_nie_obslugiwanych,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not tab_nieobslugiwane)then tab_nieobslugiwane={};end; for szablon,obiekt,kod in iter do if(not tab_nieobslugiwane[obiekt])then tab_nieobslugiwane[obiekt]={};end; tab_nieobslugiwane[obiekt][kod]=true; end; end; end; local tyt=tabela_parametrow_szablonu[numer_link]; przedrostek_listy=""; tekstowy_przedrostek,szablon=mw.ustring.match(tyt,"^'*[^%S\n]*([%d%.]*)[^%S\n]*([^\n]-)'*$"); przerwij=true; else przedrostek_listy=""; tekstowy_przedrostek=tabela_parametrow_szablonu[tabela_spisu["numer"]]; szablon=tabela_parametrow_szablonu[tabela_spisu["link"]]; przerwij=true; end; end; end); end; --[[if(przerwij)then local iterator3=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); for szablon2,obiekt2,kod2 in iterator3 do if(obiekt2=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon2,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod2); local tabela_linku=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_linku)then szablon=szablon2; break; end; elseif(obiekt2=="LINKW")then szablon=szablon2; break; end; end; end;]] local pozycja_artykulu=nil;local nazwa=nil; local tab_pozycja_elementow_w_spisie_rzeczy;local numer_rodzaju_artykulu_poprz;local id;local parametry_szablonu;local kom; local link_szablon=nil; local czy_obslugiwane=nil; local CzyObslugiwane=function() local wartosc=((tab_nieobslugiwane[obiekt])and(tab_nieobslugiwane[obiekt][kod])); czy_obslugiwane=wartosc; return (not wartosc); end; if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then local linia_artykokow=tab_linia[k]; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]); --mw.log() if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil; end; --mw.logObject(tabela_rozdzial_artykulow) else link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil; end; --[[if(przerwij)then break;end;]] if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then --- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu_licencji,nazwa_szablonu_licencji,tabela_modyfikatorow_licencji) if(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu_licencji])then if(tabela_parametrow_szablonu_licencji)then local autor=tabela_parametrow_szablonu_licencji["Autor"]; local szkoly=tabela_parametrow_szablonu_licencji["Ukończone szkoły"]; local email=tabela_parametrow_szablonu_licencji["Email"]; local dotyczy=tabela_parametrow_szablonu_licencji["Dotyczy"]; local licencjonowanie=tabela_parametrow_szablonu_licencji["Licencjonowanie"]; local umowa_prawna=tabela_parametrow_szablonu_licencji["Umowa prawna"]; local konsekwencje=tabela_parametrow_szablonu_licencji["Konsekwencje"]; local frame=mw.getCurrentFrame(); if(autor~=nil)then autor=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(autor,nazwa_modulu ,tablica_analizy_obiektow_strony_dany_modul);} end; if(szkoly~=nil)then szkoly=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szkoly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(email~=nil)then email=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(email,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(dotyczy~=nil)then dotyczy=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(dotyczy,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(licencjonowanie~=nil)then licencjonowanie=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(licencjonowanie,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(umowa_prawna~=nil)then umowa_prawna=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(umowa_prawna,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(konsekwencje~=nil)then konsekwencje=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(konsekwencje,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(autor~=nil)then tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje}; licencja_z_autorem=false; end; return true; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"); end; end; end); if(wynik)then break;end; end; end; end; end; end; if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end; end; end; numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1; end; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ---rozdzial_tab[1]=rozdzial;rozdzial_tab[2]=linia rozdziału AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany); if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil); end; --mw.logObject(tabela_artykulow); if(czy_artykul_korzystany)then return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci; else return tabela_artykulow,nil,przekierowanie_spisu_tresci; end; end; function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow) local parametry_modul=require("Module:Parametry"); if(not parametry_modul.TypeTable(tabela_artykulow))then return;end; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); for _,tab_lista in ipairs(tabela_artykulow)do if(tab_lista[2])then for _,artykul_w_bazie_element in ipairs(tab_lista[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(jakie_spisy_tresci[artykul_bez_naglowka_w_bazie])then return artykul_bez_naglowka_w_bazie; end; end; end; end; end; function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH) local adres_ksiazki_glownego_spisu_tresci=nil; local techniczne_modul=require("Module:Techniczne"); local nazwy_modul=require("Module:Nazwy"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local ile2,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki,}; if(ile2>0)then local strona_spisu_tresci=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki); if(strona_spisu_tresci)then local html_modul=require("Module:Html"); strona_spisu_tresci=html_modul.DecodeHtml(strona_spisu_tresci,true); local tabela_nazw={}; local nazwa_przestrzeni2=nazwy_modul["NAZWAPRZESTRZENI"](strona_spisu_tresci,tabela_nazw); local nazwa_przestrzeni_ksiazki2=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_spisu_tresci,tabela_nazw); local nazwa_ksiazki2=(nazwa_przestrzeni_ksiazki2=="") and nazwy_modul["NAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw) or nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw); ---- if((nazwa_przestrzeni~=nazwa_przestrzeni2)or(nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki2)or(nazwa_ksiazki~=nazwa_ksiazki2))then if(((nazwa_przestrzeni2==nazwy_np_modul.Main)or(nazwa_przestrzeni2==nazwy_np_modul.Wikijunior))or(((nazwa_przestrzeni2==nazwy_np_modul.Wikibooks)or(nazwa_przestrzeni2==nazwy_np_modul.User))and(nazwa_przestrzeni_ksiazki2~="")))then ---- adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,}; local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil; if((wynik or 0)==1)then return 1; end; ---- nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2; pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); else return 2; end; end; end; end; local parametry_modul=require("Module:Parametry"); local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer) if((parametry_modul.TypeTable(tablista_artykulow)) and parametry_modul["CzySąElementyTablicy"](tablista_artykulow))then local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci); local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci; ---- local przekierowanie_strona=czy_spis_tresci_table and spis_tresci[2] or nil; local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,}; --- if(not tablista_artykulow[1][1][2][1])then for numer,tab_lista in ipairs(tablista_artykulow[1])do if(numer>1)then tab_element[numer]=tab_lista; end; end; table.remove(tablista_artykulow,1); end; --- for _,tab_lista in ipairs(tablista_artykulow)do local numer_rozdzialu=tab_lista[1][2][1]; local czy_rozdzial_centrowany=tab_lista[1][2][4]; if(numer_rozdzialu>0)then tab_lista[1][2][1]=numer_rozdzialu+1; end; if(czy_rozdzial_centrowany)then break;end; end; --- numer=numer+1; --- --if(not tablista_artykulow)then tablista_artykulow={};end; ---- table.insert(tablista_artykulow,1,tab_element); if(spis_tresci)then if(not tab_inne_spisy)then tab_inne_spisy={};end; table.insert(tab_inne_spisy,spis_tresci); if(not tablista_artykulow[1][2])then tablista_artykulow[1][2]={};end; local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,}; table.insert(tablista_artykulow[1][2],1,tab_stare); end; end; return tablista_artykulow,tab_inne_spisy,numer; end; local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer) --mw.logObject(tablista_artykulow,"TYTAn123fhh"); local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH); --mw.logObject(tablista_artykulow_iter,spis_tresci); ---- if((tablista_artykulow_iter)and(parametry_modul.TypeTable(tablista_artykulow_iter)))then tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer); for _,value in ipairs(tablista_artykulow_iter)do if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end; table.insert(tablista_artykulow,value); end; end; return tablista_artykulow,tab_inne_spisy,numer; end; local function SpisRzeczy(tabela_artykulow,tab_inne_spisy) local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow) if(artykul_spisu_rzeczy)then local numer=1; tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer); tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; return tabela_artykulow,tab_inne_spisy; end; local adres_ustawien=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "").."NawigacjaSpecjalna/Nawigacja/"..pelna_nazwa_ksiazki; ---- adres_ustawien=techniczne_modul.PrzekierowanieDoStrony(adres_ustawien) or adres_ustawien; ---- local tekst=techniczne_modul["WikikodStrony"]{["przestrzeń"]="",["nazwa"]=adres_ustawien,}; if(not tekst)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji={}; local szablonowe_modul=require("Module:Szablonowe"); local tekst_zakodowany=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,nil,nil); local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zakodowany,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji); local szablon_uklad_autonawigacji; local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={}; local tabela_parametrow_szablonu_uklad_autonawigacji; local nazwa_szablonu_uklad_autonawigacji; local tabela_modyfikatorow_uklad_autonawigacji; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,kod,adres_ustawien,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) tabela_parametrow_szablonu_uklad_autonawigacji=tabela_parametrow_szablonu; nazwa_szablonu_uklad_autonawigacji=nazwa_szablonu; tabela_modyfikatorow_uklad_autonawigacji=tabela_modyfikatorow; if(nazwa_szablonu==stronicowyparser_obiekty_modul.uklad_autonawigacji)then szablon_uklad_autonawigacji=szablon; return true; end; end); if(wynik)then break;end; end; end; if(not szablon_uklad_autonawigacji)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; --local tabela_parametrow_szablonu_uklad_autonawigacji,nazwa_szablonu_uklad_autonawigacji,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon_uklad_autonawigacji); if(not tabela_parametrow_szablonu_uklad_autonawigacji)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local parametry_modul=require("Module:Parametry"); local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"]; ---- local html_modul=require("Module:Html"); ---- local czy_automat_manualny=(automat_manualny) and parametry_modul.CzyTak(automat_manualny) or nil; if(czy_automat_manualny)then local sub_nazwa_spis_tresci; local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"]; spis_tresci=spis_tresci and html_modul.DecodeHtml(spis_tresci,true) or nil; if(parametry_modul.CzyTak(spis_tresci))then local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local pelna_nazwa_ksiazki_spisu_tresci=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci,tabela_nazw); if(pelna_nazwa_ksiazki_spisu_tresci==pelna_nazwa_ksiazki)then sub_nazwa_spis_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci,tabela_nazw); else sub_nazwa_spis_tresci=""; end; else sub_nazwa_spis_tresci=""; end; local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local frame=mw.getCurrentFrame(); for name,value in pairs(tabela_parametrow_szablonu_uklad_autonawigacji)do tabela_parametrow_szablonu_uklad_autonawigacji[name]=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(value,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)|([^{}]-)}}}","{{(((}}%1{{!}}%2{{)))}}"); szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)}}}","{{(((}}%1{{)))}}"); return szablon; end; end),}; end; local nazwy_modul=require("Module:Nazwy"); local bez_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez spisów treści"]; local czy_bez_spisow_tresci=(bez_spisow_tresci) and parametry_modul.CzyTak(bez_spisow_tresci) or nil; local bez_analizy_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez analizy spisów treści"]; local czy_bez_analizy_spisow_tresci=(bez_analizy_spisow_tresci) and parametry_modul.CzyTak(bez_analizy_spisow_tresci) or nil; ---- local tab_inne_spisy;local nazwa_glownego_spisu; local tablista_artykulow; local licencja; local numer=1; ---- --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); ---- local tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;local tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;local przekierowanie_spisu_tresci; if(not czy_bez_spisow_tresci)then local spis_tresci_main=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"]; if(spis_tresci_main)then spis_tresci_main=html_modul.DecodeHtml(spis_tresci_main,true); --- spis_tresci_main=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci_main,[2]=pelna_nazwa_ksiazki,}; end; local tabela_nazw={}; local pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci=parametry_modul.CzyTak(spis_tresci_main) and nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci_main,tabela_nazw) or pelna_nazwa_ksiazki; if(pelna_nazwa_ksiazki~=pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci)then return 0; end; nazwa_glownego_spisu=parametry_modul.CzyTak(spis_tresci_main) and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci_main,tabela_nazw) or ""; else nazwa_glownego_spisu=""; end; if((not czy_bez_spisow_tresci)and(not czy_bez_analizy_spisow_tresci))then tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); if(przekierowanie_spisu_tresci)then nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,}; end; if((not tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika)or(tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika==0))then return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; end; local IteratorSpisTresci=function() local liczba=1; return function() local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba]; liczba=liczba+1; return spis_tresci; end; end; local iter=IteratorSpisTresci(); tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika; tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer); local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow); if(artykul_spisu_rzeczy)then tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; for spis_tresci in iter do --- if(not parametry_modul.CzyTak(spis_tresci))then return;end; spis_tresci=html_modul.DecodeHtml(spis_tresci,true); spis_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci,[2]="",}; --- tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer); end; end; ---- local IteratorFun=function() local liczba=1; local STRONA=function(liczba)return liczba*2-1;end; local NAZWA=function(liczba)return liczba*2;end; return function() local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)]; local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)]; liczba=liczba+1; return strona,nazwa; end; end; local tablica_stron_ksiazki={}; local tablica_stron_inne={}; local iter=IteratorFun(); local ksiazkawe_modul=require("Module:Książkowe"); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local dodatkowe_artykuly=nil; local tablica_artykulow_zebranych={}; local tab_nazwa_spisow_przekierowaniowych={}; local dodatkowe_artykuly=nil; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne") local tabela_rozdzial_artykulow=nil; ---- local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki) and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"") or nil; local pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil; ---- --local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={}; ---- for strona,nazwa in iter do local function ZbieranieDanychStronZAutonawigacji() if(not parametry_modul.CzyTak(strona))then return;end; strona=html_modul.DecodeHtml(strona,true); nazwa=parametry_modul.CzyTak(nazwa) and html_modul.DecodeHtml(nazwa,true) or nil; if(not dodatkowe_artykuly)then if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end; table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,}); tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow]; end; --- strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,}; local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare) if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end; ---- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]); local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1]; local czy_w_podreczniku=tab_stare[5]; local kod_jezyka_koncowy=czy_table_baza_artykulu and tab_stare[1][5] or nil; local kod_projektu_koncowy=czy_table_baza_artykulu and tab_stare[1][6] or nil; ---- table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,}); ---- table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); end; local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,true,{strona,nazwa,},nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",pelna_nazwa_spisu_tresci_szablonowa,pelna_nazwa_ksiazki,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,tab_nazwa_spisow_przekierowaniowych,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"); end; ZbieranieDanychStronZAutonawigacji(); end; ---- return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci; end; return p; ie5f755iwyzdkwgysx3e0cwe867vohj 545805 545803 2026-06-04T13:06:42Z Persino 2851 Anulowano wersję [[Special:Diff/545803|545803]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 545805 Scribunto text/plain local p={}; local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow) local parametry_modul=require("Module:Parametry"); local ile=0; for i,tabela_rozdzial_artykulow_i in pairs(tabela_rozdzial_artykulow)do i=parametry_modul.TypeNumber(i) and i or nil; if((i)and(i>1))then ile=ile+#(tabela_rozdzial_artykulow_i or {}); end; end; return ile; end; local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,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_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=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); --- local numer_rodzaju_artykulu_poprz=numer_rodzaju_artykulu; if(numer_rodzaju_artykulu)then --mw.log(szablon,numer_rodzaju_artykulu,wliczaj_artykuly_tego_rozdzialu) numer_rodzaju_artykulu=(wliczaj_artykuly_tego_rozdzialu)and numer_rodzaju_artykulu or (numer_rodzaju_artykulu+6); end; --- --Rozdzialy początek local znaki_niedozwolone; local function ParametrPierwszy(tab_artykul,czy_niedozwolone) local artykul=tab_artykul[1]; local parametry=tab_artykul[2]; local naglowek=tab_artykul[3]; local tablica_przekierowania=tab_artykul[4]; ---- local znaki_niedozwolone; if(czy_niedozwolone)then znaki_niedozwolone=mw.ustring.match(artykul,"[|<>{}%[%]]"); end; ---- --if(artykul)then --artykul=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(artykul,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); --artykul=parametry_modul["Odstępy"]{[1]=artykul,[2]="tak",} --artykul=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](artykul); --end; ---- --if(parametry)then -- parametry=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(parametry,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) -- parametry=parametry_modul["Odstępy"]{[1]=parametry,[2]="tak",} -- parametry=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](parametry); --end; ---- --if(naglowek)then -- naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); -- naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",} -- naglowek=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](naglowek); --end; ---- tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul; return tab_artykul,znaki_niedozwolone,tablica_przekierowania; end; local parametry_modul=require("Module:Parametry"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych; local szablony_rozwijane_przez_javascript_nazwowe_linkowe=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_nazwowe_linkowe; ---- local function RozwijanieNazwy(szablon,obiekt,kod) if(obiekt=="SZABLON")then local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(not wynik)then local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(szablony_rozwijane_przez_javascript_nazwowe_linkowe[nazwa_szablonu])then local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or "")); return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; end); if(wynik)then return wynik;end; end; end); return szablon,true; elseif(nazwa_szablonu=="Br")then return " ",false; elseif( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or "")); return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true),true; end; end); if(wynik)then return wynik,jaki_wynik;end; else return wynik,false; end; return nil,true; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="br")then return " "; end; end; return szablon; end; if((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz==1)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1; local czy_tablica=nil;local tablica_przekierowania=nil; if(tab_pozycja_elementow_w_spisie_rzeczy[1])then czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); if(not czy_tablica)then --tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); --tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",} --tab_pozycja_elementow_w_spisie_rzeczy[1]=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tab_pozycja_elementow_w_spisie_rzeczy[1]); znaki_niedozwolone=mw.ustring.match(tab_pozycja_elementow_w_spisie_rzeczy[1],"[|<>{}%[%]]"); tablica_artykulow_zebranych={tab_pozycja_elementow_w_spisie_rzeczy[1],0,false,}; else tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true); local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil; if(not czy_inna_ksiazka)then czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); else local artykul=tablica_przekierowania[2]; local parametry=tablica_przekierowania[3]; local naglowek=tablica_przekierowania[4]; czy_tablica=(artykul)and(parametry or naglowek); end; if(not czy_tablica)then local aktualny_artykul_ksiazki; if(not czy_inna_ksiazka)then aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1]; else aktualny_artykul_ksiazki=tablica_przekierowania[2] or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]); end; tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; else local aktualny_artykul_ksiazki; if(not czy_inna_ksiazka)then aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1][1]; else aktualny_artykul_ksiazki=tablica_przekierowania[2] or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]); end; if(tablica_artykulow_zebranych[1]~=aktualny_artykul_ksiazki)then tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; else tablica_artykulow_zebranych[3]=true; end; end; end; end; ---- local szablonowe_modul=require("Module:Szablonowe"); ---- if(tab_pozycja_elementow_w_spisie_rzeczy[2])then local czy_szablon_wszystko=false; tab_pozycja_elementow_w_spisie_rzeczy[2]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[2],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) local wynik,czy_szablon=RozwijanieNazwy(szablon,obiekt,kod); czy_szablon_wszystko=czy_szablon_wszystko or czy_szablon; return wynik; end); if(czy_szablon_wszystko)then local frame=mw.getCurrentFrame(); tab_pozycja_elementow_w_spisie_rzeczy[2]=frame:preprocess(tab_pozycja_elementow_w_spisie_rzeczy[2]); end; local specjalne_modul=require("Module:Specjalne"); tab_pozycja_elementow_w_spisie_rzeczy[2]=specjalne_modul["UsuńZnakiSpecjalne"](tab_pozycja_elementow_w_spisie_rzeczy[2]); tab_pozycja_elementow_w_spisie_rzeczy[2]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[2],[2]="tak",[4]="tak",}; end; ---- if(znaki_niedozwolone)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"); end; end; local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false); local stara_nazwa_jednostki=nazwa_jednostki; if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end; --local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]]; linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); --local przekierowanie=pelna_nazwa_ksiazki..((nazwa_jednostki~="") and ("/"..nazwa_jednostki) or ""); --local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie); --local strona=(tablica_przekierowania) local przekierowanie; if(--[[strona--]]tablica_przekierowania)then --nazwa_jednostki=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona); --przekierowanie=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie) przekierowanie=tablica_przekierowania[2]; if((czy_tablica)and(stara_nazwa_jednostki~=""))then przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,} or przekierowanie ) or nil; nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,}; local czy_w_tab=tablica_artykulow_zebranych[2]; local czy_wsadzac=tablica_artykulow_zebranych[3]; if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,}; --table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); tablica_artykulow_zebranych[2]=1; end; end; else nazwa_jednostki=tab_pozycja_elementow_w_spisie_rzeczy[1]; if((czy_tablica)and(stara_nazwa_jednostki~=""))then local czy_w_tab=tablica_artykulow_zebranych[2]; local czy_wsadzac=tablica_artykulow_zebranych[3]; if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,}; --table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); tablica_artykulow_zebranych[2]=1; end; end; end; local ile_dodac_do_poziomu_artykulu=tablica_artykulow_zebranych[2]; local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil; local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[2] or tablica_przekierowania or tab_pozycja_elementow_w_spisie_rzeczy[5] or tab_pozycja_elementow_w_spisie_rzeczy[6] or ile_dodac_do_poziomu_artykulu_lub_nil) and ({nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],ile_dodac_do_poziomu_artykulu_lub_nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or nazwa_jednostki),{#przedrostek_listy--[[+(ile_dodac_do_poziomu_artykulu and ile_dodac_do_poziomu_artykulu or 0)]],przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,(numer_rodzaju_artykulu>1) and (Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)) or nil,}; --table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); --mw.logObject(tab_stare,"TYTAN1") __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulu_w_podreczniku,tab_stare); --mw.logObject(tabela_rozdzial_artykulow,"TYTAN2") elseif((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz>=2)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then if(tab_pozycja_elementow_w_spisie_rzeczy[1])then if(not parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]))then --tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",}; --tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); else tab_pozycja_elementow_w_spisie_rzeczy[1]=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],false); end; end; local szablonowe_modul=require("Module:Szablonowe"); if(tab_pozycja_elementow_w_spisie_rzeczy[2])then local czy_szablon_wszystko=false; tab_pozycja_elementow_w_spisie_rzeczy[2]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[2],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) local wynik,czy_szablon=RozwijanieNazwy(szablon,obiekt,kod); czy_szablon_wszystko=czy_szablon_wszystko or czy_szablon; return wynik; end); if(czy_szablon_wszystko)then local frame=mw.getCurrentFrame(); tab_pozycja_elementow_w_spisie_rzeczy[2]=frame:preprocess(tab_pozycja_elementow_w_spisie_rzeczy[2]); end; local specjalne_modul=require("Module:Specjalne"); tab_pozycja_elementow_w_spisie_rzeczy[2]=specjalne_modul["UsuńZnakiSpecjalne"](tab_pozycja_elementow_w_spisie_rzeczy[2]); tab_pozycja_elementow_w_spisie_rzeczy[2]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[2],[2]="tak",[4]="tak",}; end; if(tab_pozycja_elementow_w_spisie_rzeczy[3])then tab_pozycja_elementow_w_spisie_rzeczy[3]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[3],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); tab_pozycja_elementow_w_spisie_rzeczy[3]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[3],[2]="tak",[4]="tak",}; end; if(tab_pozycja_elementow_w_spisie_rzeczy[4])then tab_pozycja_elementow_w_spisie_rzeczy[4]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[4],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); tab_pozycja_elementow_w_spisie_rzeczy[4]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[4],[2]="tak",[4]="tak",}; end; local wiki_modul=require("Module:Wiki"); ----- local numer_rodzaju_artykulow_w_nie_podreczniku=numer_rodzaju_artykulu+1; ----- if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku]={}; end; --local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]]; linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[1])and((tab_pozycja_elementow_w_spisie_rzeczy[2])or(tab_pozycja_elementow_w_spisie_rzeczy[3])or(tab_pozycja_elementow_w_spisie_rzeczy[4])or(tab_pozycja_elementow_w_spisie_rzeczy[5])or(tab_pozycja_elementow_w_spisie_rzeczy[6])))and({tab_pozycja_elementow_w_spisie_rzeczy[1],tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[3],tab_pozycja_elementow_w_spisie_rzeczy[4],tab_pozycja_elementow_w_spisie_rzeczy[5],nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or tab_pozycja_elementow_w_spisie_rzeczy[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,false,Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow),}; --table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); end; --mw.logObject(tabela_rozdzial_artykulow,"TYTAN") return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych; end; function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local specjalne_modul=require("Module:Specjalne"); local szablonowe_modul=require("Module:Szablonowe"); local html_modul=require("Module:Html"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_na_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then ----- local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu; local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych; local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu; ----- local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; ---- local dodatek=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(dodatek)then return dodatek;end; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then return (not tab_szablon_link_intelignetny[4]) and tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1]; else local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end; end; local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end; ---- if(szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu[nazwa_szablonu])then local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); return szablon; end; end); if(wynik)then return wynik;end; ---- local rozdzial_na_tekst=mw.ustring.gsub(szablon,"^{{[^{}|]*|([^{}|]*).*}}$","%1"); return rozdzial_na_tekst; elseif(obiekt=="NOWIKI")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif(obiekt=="PRE")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif(obiekt=="ŹRÓDŁO")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif((obiekt~="MATH")and(obiekt~="GALERIA")and(obiekt~="MAPAOBRAZU")and(obiekt~="INNEPRE"))then local rozdzial_na_tekst=specjalne_modul["UsuńKomentarze"](szablon); rozdzial_na_tekst=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńSzablonyStylów"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZnaczniki"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńKategorie"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńWywołaniaPlików"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńInterwiki"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst); return rozdzial_na_tekst; else return ""; end; end); ---- rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZbędneBiałeZnaki"](rozdzial_na_tekst); return rozdzial_na_tekst; end; function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH) local parametry_modul=require("Module:Parametry"); if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki))then return 0;end; local nazwy_modul=require("Module:Nazwy"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_modulu=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and("/"..nazwa_spisu_tresci) or ""); --- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci) and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) or nil; local pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil; --- local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); local przekierowanie_spisu_tresci=nil; local tab_nazwa_spisow_przekierowaniowych={}; --[[if(adres_ksiazki_glownego_spisu_tresci)then if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end; end;]] --if(adres_ksiazki_glownego_spisu_tresci)then -- local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; -- local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; -- local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end; -- end; if(strona)then local html_modul=require("Module:Html"); strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; local pelna_nazwa_ksiazki_przekierowania=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(pelna_nazwa_ksiazki_przekierowania~=pelna_nazwa_ksiazki)then return 0;end; nazwa_modulu=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); nazwa_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); przekierowanie_spisu_tresci=nazwa_spisu_tresci; ---- pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci) and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) or nil; pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil; end; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); --local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,true); local __FUNKCJA_PARAMETRY=nil; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(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); if(not tekst_rozwiniety_calego_artykulu)then return 0;end; if(__FUNKCJA_ZBIERANIA_DANYCH)then __FUNKCJA_ZBIERANIA_DANYCH(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; ---- local techniczne_modul=require("Module:Techniczne"); ---- local tabelalisty2=nil; local licencja_z_autorem=true; local tabela_artykulow=nil; local tabela_licencji_spisu_tresci=nil; local parametry_modul=require("Module:Parametry"); local html_modul=require("Module:Html"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; local szablony_kompletowania_stron_woluminu=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu; local szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji; local szablony_ozdobne_stron_woluminu=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") --[[local pelna_nazwa_spisu_tresci_wzor="^("..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or "") ..techniczne_modul["WzórNazwyStrony"](((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki) ..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "") .."(/[Ss][Pp][Ii][Ss][%s_]+[Tt][Rr][Ee][ŚśSs][Cc][Ii]))$";]] --local tablica_analizy_obiektow_strony_dany_modul={}; --local tablica_danych_parametrow_szablonu_strony={}; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,--[[function(pelna_nazwa_szablonu,tabela_modyfikatorow) local pelna_nazwa_spisu_tresci,strona_ze_spisem_tresci=mw.ustring.match(pelna_nazwa_szablonu,pelna_nazwa_spisu_tresci_wzor); if(pelna_nazwa_spisu_tresci and strona_ze_spisem_tresci)then pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); if(tekst)then ---- if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end; if(not tablica_ksiazki.spis_tresci[nazwa_spisu_tresci])then tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]={};end local tablica_spis_tresci=tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]; tablica_spis_tresci.tekst=tekst; tablica_spis_tresci.adres_wzgledny_spisu_tresci=strona_ze_spisem_tresci; ---- return tekst; end; end; end]]nil,function(str,pelna_nazwa_strony,tablica_analizy_dany_modul,czy_naglowek) local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod) if(obiekt=="SZABLON")then ---- local bez_kodow=not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()); if(bez_kodow)then return;end; ---- local function PomijajLinkiOrazLicencje(szablon) return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]; if(czy_szablony_licencji)then return true;end; local czy_szablony_ozdobne=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu[nazwa_szablonu]; if(czy_szablony_ozdobne)then return true;end; --local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); --local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu); --if(wynik)then return wynik;end; ---- if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]))then return true;end; local tab_wyzyskane_od_nazwy_szablonu=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_wyzyskane_od_nazwy_szablonu)then return true;end; end); end; ---- local CzySzablonLinkLubLicencja=function(szablon) local ile_szablon_linki_lub_licencje=0; local _,ile=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("(SZABLON)"), function(obiekt,kod) kod=tonumber(kod); local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=PomijajLinkiOrazLicencje(szablon); if(wynik)then ile_szablon_linki=ile_szablon_linki+1;end; return nil; end); if((ile>0)and(ile_szablon_linki_lub_licencje>0))then return true;end; end; local bez_kodow_linkow_wewnetrznych=( not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINK[WZ]")) and not CzySzablonLinkLubLicencja(szablon) ) or not mw.ustring.match(szablon,"\n([#:*;]+)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)") or not mw.ustring.match(szablon,"\n([#:*;]*)[^%S\n]*([%w%p]+)[^%S\n]*([^\n]+)"); if(bez_kodow_linkow_wewnetrznych)then return;end; local wynik=PomijajLinkiOrazLicencje(szablon); if(wynik)then return;end; ----- return ""; --[[elseif(obiekt=="WIKITABELA")then szablon=mw.ustring.match(szablon,"^{|(.-)|}$"); szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|[%-%+][^%S\n]+[^|\n]*","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|%-","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|%+","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|","\n\n"); return szablon;]] end; return; end; if(not czy_naglowek)then str=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_strony,tablica_analizy_dany_modul,function(szablon,obiekt,kod) local wynik=FunkcjaIteratoraTekstuZakodowego(szablon,obiekt,kod); if(wynik)then return wynik;end; return nil,true; end); return str; end; return str; end,function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_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 stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_jakie_nie_rozdzialy=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu; local jakie_nie_rozdzialy=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_nie_rozdzialy); local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_nie_rozdzialy,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); local numer_rozdzialu_w_ksiazce=1; local parametry_modul=require("Module:Parametry"); local html_modul=require("Module:Html"); local szablonowe_modul=require("Module:Szablonowe"); local tab_dozwolonych_szablonow_z_elementami_spisu_artykulow=stronicowyparser_obiekty_modul.tab_dozwolonych_szablonow_z_elementami_spisu_artykulow; local czy_jest_spis_tresci=nil; local poziom_spisu_tresci=nil; local dalej_nie_rozwazaj_spis_tresci=nil; local wliczaj_artykuly_tego_rozdzialu=nil; local specjalne_modul=require("Module:Specjalne"); local tablica_artykulow_zebranych={}; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); ---- --local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu; --local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu; ---- local maksymalny_rozmiar_rozdzialu_zerowego=50; local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany) --rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1"); --if(poziom_rozdzialu)then -- text=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(text,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); --end; if(not tabela_artykulow)then tabela_artykulow={};end; local spreparowany_uzyskany_tekst_rozdzialu=nil; ---- local tabela_rozdzial_artykulow; if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then tabela_artykulow[numer_rozdzialu_w_ksiazce]={}; ---- tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce]; ---- local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,}; spreparowany_uzyskany_tekst_rozdzialu=rozdzial_na_tekst; end; local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]); if(czy_spis_rzeczy_napis_wprowadzenia_tekstu)then poziom_spisu_tresci=poziom_rozdzialu; czy_jest_spis_tresci=true; elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then if((((poziom_spisu_tresci>0)and(poziom_rozdzialu>0))or((poziom_spisu_tresci<=0)and(poziom_rozdzialu<=0)))and(math.abs(poziom_spisu_tresci or 0)<math.abs(poziom_rozdzialu)))then wliczaj_artykuly_tego_rozdzialu=true; else wliczaj_artykuly_tego_rozdzialu=nil; dalej_nie_rozwazaj_spis_tresci=true; end; end; local function iteratorTekstuNaglowka() local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)"; local iter=nil; local tak=nil; local czy_rozdzial=nil; return function() if(not czy_rozdzial)then if((poziom_rozdzialu or 0)>0)then if(not iter)then iter=mw.ustring.gmatch(rozdzial,"([^\n]+)"); end; local wartosc=iter(); if(not wartosc)then czy_rozdzial=true; iter=nil; else return "","",wartosc,true; end; else czy_rozdzial=true; end; end; local function dane_iteratora() if(not iter)then iter=mw.ustring.gmatch(text,"\n"..re); end; local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=iter(); if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci); return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false; else return nil; end; end; if(not tak)then tak=true; local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=mw.ustring.match(text,"^"..re); if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci); return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false; else return dane_iteratora(); end; end; return dane_iteratora(); end; end; ---- local function LiniaArtykulow(linia) local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod=iter(); if((not szablon) or (not kod) or(not obiekt))then return {};end; local function SzablonAnalizujKompletnosc(szablon) ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- return stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu[nazwa_szablonu]; end); return wynik; end; ----- local tak_pierwsze=((obiekt=="SZABLON") and SzablonAnalizujKompletnosc(szablon) or nil); ----- for szablon,obiekt,kod in iter do if(obiekt=="SZABLON")then local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local tak_drugie=SzablonAnalizujKompletnosc(szablon); if(tak_pierwsze)then if(tak_drugie)then linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")(%s*)("..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")","%1,%2%3"); end; else if(tak_drugie)then linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")(%s*)(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")","%1,%2%3"); end; end; end; end; local tabela_linii_artykulow=mw.text.split(linia,"%s*,%s*",false); for i=1,#tabela_linii_artykulow,1 do tabela_linii_artykulow[i]=mw.ustring.gsub(tabela_linii_artykulow[i],"&#"..mw.ustring.byte(',')..";",","); end; return tabela_linii_artykulow; end; local iterator=iteratorTekstuNaglowka(); local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial])); for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do local nie_pomijaj_tego_rozdzialu=false; if((not przedrostek_listy)or(#przedrostek_listy==0))then local rozdzial,czy_z_kropka=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(((rozdzial)and(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego))or(not rozdzial))then nie_pomijaj_tego_rozdzialu=true; end; else local czy_pominac_ten_rozdzial_jako_linie=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrostek_listy,linia,true,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(not czy_pominac_ten_rozdzial_jako_linie)then nie_pomijaj_tego_rozdzialu=true; else nie_pomijaj_tego_rozdzialu=false; end; end; if(nie_pomijaj_tego_rozdzialu)then local ile=0; local linia_rozwazana=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(linia,nil ,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod--[[,czy_sam_siebie]]) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- local czy_link=linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu] or inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu] or stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu ,tablica_danych_parametrow_szablonu_strony,kod); local czy_szablon=czy_link or szablony_kompletowania_stron_woluminu[nazwa_szablonu] or szablony_licencji[nazwa_szablonu] --or szablony_ozdobne_stron_woluminu[nazwa_szablonu]; if(czy_link)then ile=ile+1;end; return czy_szablon,obiekt,kod; end); elseif(obiekt=="LINKW")then if(specjalne_modul["CzyLinkWewnętrzny"](szablon))then ile=ile+1; return true,obiekt,kod; end; elseif(obiekt=="LINKZ")then ile=ile+1; return true,obiekt,kod; end; end); ---- local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$"); local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$") or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$")))) or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil); ---- local nowa_linia=false; local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana) return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare) --if((czy_spis_rzeczy_napis_wprowadzenia_tekstu)and(numer_podtablicy_w_tablicy>2))then return;end; if((czy_rozdzial_centrowany)and(w_rozdziale)and(czy_linia_uwzgledniana)and(tab_stare[2])and(tab_stare[2][1]))then tab_stare[2][1]=tab_stare[2][1]+1; end; if(not w_rozdziale)then local function CzyZaliczac() return ((not mw.ustring.match(linia,"^%w+%p+")) and mw.ustring.match(linia,"^%s*'*%s*%w+")); --or mw.ustring.match(linia,"^%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKZ")); end; if(nowa_linia)then tab_stare[2][4]=true; table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); elseif(((poziom_rozdzialu)or(#(przedrostek_listy or "")>0))and((ile>1)or(CzyZaliczac())))then nowa_linia=true; numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1; tabela_artykulow[numer_rozdzialu_w_ksiazce]={}; tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce]; ---- local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,}; tab_stare[2][4]=true; tab_stare[6]=(numer_podtablicy_w_tablicy>2) and 0 or nil; tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy]={}; table.insert(tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy],tab_stare); else table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); end; else table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); end; end; end; local function AnalizaLiniiObiekty(linia_rozwazana) local tab_linia=LiniaArtykulow(linia_rozwazana); for k=1,#tab_linia,1 do local iterator2=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tab_linia[k],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); local tab_nieobslugiwane=nil; for szablon,obiekt,kod in iterator2 do local czy_szablon=(obiekt=="SZABLON");local czy_link=((obiekt=="LINKW")or(obiekt=="LINKZ")); if(czy_szablon or czy_link)then local przerwij=nil; if(czy_szablon)then ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu ,tabela_modyfikatorow) ---- --local przerwij=nil; local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then if(tabela_spisu[1]==true)then --local tabela_parametrow_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil ,tablica_danych_parametrow_szablonu_strony,kod); local numer_link=tabela_spisu["numer_link"]; for name,value in pairs(tabela_parametrow_szablonu)do if(name~=numer_link)then local kod_w_nie_obslugiwanych=tabela_parametrow_szablonu[name]; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(kod_w_nie_obslugiwanych,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not tab_nieobslugiwane)then tab_nieobslugiwane={};end; for szablon,obiekt,kod in iter do if(not tab_nieobslugiwane[obiekt])then tab_nieobslugiwane[obiekt]={};end; tab_nieobslugiwane[obiekt][kod]=true; end; end; end; local tyt=tabela_parametrow_szablonu[numer_link]; przedrostek_listy=""; tekstowy_przedrostek,szablon=mw.ustring.match(tyt,"^'*[^%S\n]*([%d%.]*)[^%S\n]*([^\n]-)'*$"); przerwij=true; else przedrostek_listy=""; tekstowy_przedrostek=tabela_parametrow_szablonu[tabela_spisu["numer"]]; szablon=tabela_parametrow_szablonu[tabela_spisu["link"]]; przerwij=true; end; end; end); end; --[[if(przerwij)then local iterator3=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); for szablon2,obiekt2,kod2 in iterator3 do if(obiekt2=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon2,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod2); local tabela_linku=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_linku)then szablon=szablon2; break; end; elseif(obiekt2=="LINKW")then szablon=szablon2; break; end; end; end;]] local pozycja_artykulu=nil;local nazwa=nil; local tab_pozycja_elementow_w_spisie_rzeczy;local numer_rodzaju_artykulu_poprz;local id;local parametry_szablonu;local kom; local link_szablon=nil; local czy_obslugiwane=nil; local CzyObslugiwane=function() local wartosc=((tab_nieobslugiwane[obiekt])and(tab_nieobslugiwane[obiekt][kod])); czy_obslugiwane=wartosc; return (not wartosc); end; if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then local linia_artykokow=tab_linia[k]; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]); --mw.log() if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil; end; --mw.logObject(tabela_rozdzial_artykulow) else link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil; end; --[[if(przerwij)then break;end;]] if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then --- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu_licencji,nazwa_szablonu_licencji,tabela_modyfikatorow_licencji) if(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu_licencji])then if(tabela_parametrow_szablonu_licencji)then local autor=tabela_parametrow_szablonu_licencji["Autor"]; local szkoly=tabela_parametrow_szablonu_licencji["Ukończone szkoły"]; local email=tabela_parametrow_szablonu_licencji["Email"]; local dotyczy=tabela_parametrow_szablonu_licencji["Dotyczy"]; local licencjonowanie=tabela_parametrow_szablonu_licencji["Licencjonowanie"]; local umowa_prawna=tabela_parametrow_szablonu_licencji["Umowa prawna"]; local konsekwencje=tabela_parametrow_szablonu_licencji["Konsekwencje"]; local frame=mw.getCurrentFrame(); if(autor~=nil)then autor=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(autor,nazwa_modulu ,tablica_analizy_obiektow_strony_dany_modul);} end; if(szkoly~=nil)then szkoly=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szkoly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(email~=nil)then email=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(email,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(dotyczy~=nil)then dotyczy=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(dotyczy,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(licencjonowanie~=nil)then licencjonowanie=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(licencjonowanie,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(umowa_prawna~=nil)then umowa_prawna=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(umowa_prawna,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(konsekwencje~=nil)then konsekwencje=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(konsekwencje,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);} end; if(autor~=nil)then tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje}; licencja_z_autorem=false; end; return true; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"); end; end; end); if(wynik)then break;end; end; end; end; end; end; if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end; end; end; numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1; end; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ---rozdzial_tab[1]=rozdzial;rozdzial_tab[2]=linia rozdziału AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany); if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil); end; --mw.logObject(tabela_artykulow); if(czy_artykul_korzystany)then return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci; else return tabela_artykulow,nil,przekierowanie_spisu_tresci; end; end; function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow) local parametry_modul=require("Module:Parametry"); if(not parametry_modul.TypeTable(tabela_artykulow))then return;end; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); for _,tab_lista in ipairs(tabela_artykulow)do if(tab_lista[2])then for _,artykul_w_bazie_element in ipairs(tab_lista[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(jakie_spisy_tresci[artykul_bez_naglowka_w_bazie])then return artykul_bez_naglowka_w_bazie; end; end; end; end; end; function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH) local adres_ksiazki_glownego_spisu_tresci=nil; local techniczne_modul=require("Module:Techniczne"); local nazwy_modul=require("Module:Nazwy"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local ile2,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki,}; if(ile2>0)then local strona_spisu_tresci=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki); if(strona_spisu_tresci)then local html_modul=require("Module:Html"); strona_spisu_tresci=html_modul.DecodeHtml(strona_spisu_tresci,true); local tabela_nazw={}; local nazwa_przestrzeni2=nazwy_modul["NAZWAPRZESTRZENI"](strona_spisu_tresci,tabela_nazw); local nazwa_przestrzeni_ksiazki2=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_spisu_tresci,tabela_nazw); local nazwa_ksiazki2=(nazwa_przestrzeni_ksiazki2=="") and nazwy_modul["NAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw) or nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw); ---- if((nazwa_przestrzeni~=nazwa_przestrzeni2)or(nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki2)or(nazwa_ksiazki~=nazwa_ksiazki2))then if(((nazwa_przestrzeni2==nazwy_np_modul.Main)or(nazwa_przestrzeni2==nazwy_np_modul.Wikijunior))or(((nazwa_przestrzeni2==nazwy_np_modul.Wikibooks)or(nazwa_przestrzeni2==nazwy_np_modul.User))and(nazwa_przestrzeni_ksiazki2~="")))then ---- adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,}; local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil; if((wynik or 0)==1)then return 1; end; ---- nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2; pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); else return 2; end; end; end; end; local parametry_modul=require("Module:Parametry"); local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer) if((parametry_modul.TypeTable(tablista_artykulow)) and parametry_modul["CzySąElementyTablicy"](tablista_artykulow))then local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci); local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci; ---- local przekierowanie_strona=czy_spis_tresci_table and spis_tresci[2] or nil; local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,}; --- if(not tablista_artykulow[1][1][2][1])then for numer,tab_lista in ipairs(tablista_artykulow[1])do if(numer>1)then tab_element[numer]=tab_lista; end; end; table.remove(tablista_artykulow,1); end; --- for _,tab_lista in ipairs(tablista_artykulow)do local numer_rozdzialu=tab_lista[1][2][1]; local czy_rozdzial_centrowany=tab_lista[1][2][4]; if(numer_rozdzialu>0)then tab_lista[1][2][1]=numer_rozdzialu+1; end; if(czy_rozdzial_centrowany)then break;end; end; --- numer=numer+1; --- --if(not tablista_artykulow)then tablista_artykulow={};end; ---- table.insert(tablista_artykulow,1,tab_element); if(spis_tresci)then if(not tab_inne_spisy)then tab_inne_spisy={};end; table.insert(tab_inne_spisy,spis_tresci); if(not tablista_artykulow[1][2])then tablista_artykulow[1][2]={};end; local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,}; table.insert(tablista_artykulow[1][2],1,tab_stare); end; end; return tablista_artykulow,tab_inne_spisy,numer; end; local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer) --mw.logObject(tablista_artykulow,"TYTAn123fhh"); local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH); --mw.logObject(tablista_artykulow_iter,spis_tresci); ---- if((tablista_artykulow_iter)and(parametry_modul.TypeTable(tablista_artykulow_iter)))then tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer); for _,value in ipairs(tablista_artykulow_iter)do if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end; table.insert(tablista_artykulow,value); end; end; return tablista_artykulow,tab_inne_spisy,numer; end; local function SpisRzeczy(tabela_artykulow,tab_inne_spisy) local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow) if(artykul_spisu_rzeczy)then local numer=1; tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer); tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; return tabela_artykulow,tab_inne_spisy; end; local adres_ustawien=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "").."NawigacjaSpecjalna/Nawigacja/"..pelna_nazwa_ksiazki; ---- adres_ustawien=techniczne_modul.PrzekierowanieDoStrony(adres_ustawien) or adres_ustawien; ---- local tekst=techniczne_modul["WikikodStrony"]{["przestrzeń"]="",["nazwa"]=adres_ustawien,}; if(not tekst)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji={}; local szablonowe_modul=require("Module:Szablonowe"); local tekst_zakodowany=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,nil,nil); local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zakodowany,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji); local szablon_uklad_autonawigacji; local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={}; local tabela_parametrow_szablonu_uklad_autonawigacji; local nazwa_szablonu_uklad_autonawigacji; local tabela_modyfikatorow_uklad_autonawigacji; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,kod,adres_ustawien,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) tabela_parametrow_szablonu_uklad_autonawigacji=tabela_parametrow_szablonu; nazwa_szablonu_uklad_autonawigacji=nazwa_szablonu; tabela_modyfikatorow_uklad_autonawigacji=tabela_modyfikatorow; if(nazwa_szablonu==stronicowyparser_obiekty_modul.uklad_autonawigacji)then szablon_uklad_autonawigacji=szablon; return true; end; end); if(wynik)then break;end; end; end; if(not szablon_uklad_autonawigacji)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; --local tabela_parametrow_szablonu_uklad_autonawigacji,nazwa_szablonu_uklad_autonawigacji,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon_uklad_autonawigacji); if(not tabela_parametrow_szablonu_uklad_autonawigacji)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local parametry_modul=require("Module:Parametry"); local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"]; ---- local html_modul=require("Module:Html"); ---- local czy_automat_manualny=(automat_manualny) and parametry_modul.CzyTak(automat_manualny) or nil; if(czy_automat_manualny)then local sub_nazwa_spis_tresci; local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"]; spis_tresci=spis_tresci and html_modul.DecodeHtml(spis_tresci,true) or nil; if(parametry_modul.CzyTak(spis_tresci))then local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local pelna_nazwa_ksiazki_spisu_tresci=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci,tabela_nazw); if(pelna_nazwa_ksiazki_spisu_tresci==pelna_nazwa_ksiazki)then sub_nazwa_spis_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci,tabela_nazw); else sub_nazwa_spis_tresci=""; end; else sub_nazwa_spis_tresci=""; end; local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local frame=mw.getCurrentFrame(); for name,value in pairs(tabela_parametrow_szablonu_uklad_autonawigacji)do tabela_parametrow_szablonu_uklad_autonawigacji[name]=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(value,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)|([^{}]-)}}}","{{(((}}%1{{!}}%2{{)))}}"); szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)}}}","{{(((}}%1{{)))}}"); return szablon; end; end),}; end; local nazwy_modul=require("Module:Nazwy"); local bez_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez spisów treści"]; local czy_bez_spisow_tresci=(bez_spisow_tresci) and parametry_modul.CzyTak(bez_spisow_tresci) or nil; local bez_analizy_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez analizy spisów treści"]; local czy_bez_analizy_spisow_tresci=(bez_analizy_spisow_tresci) and parametry_modul.CzyTak(bez_analizy_spisow_tresci) or nil; ---- local tab_inne_spisy;local nazwa_glownego_spisu; local tablista_artykulow; local licencja; local numer=1; ---- --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); ---- local tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;local tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;local przekierowanie_spisu_tresci; if(not czy_bez_spisow_tresci)then local spis_tresci_main=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"]; if(spis_tresci_main)then spis_tresci_main=html_modul.DecodeHtml(spis_tresci_main,true); --- spis_tresci_main=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci_main,[2]=pelna_nazwa_ksiazki,}; end; local tabela_nazw={}; local pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci=parametry_modul.CzyTak(spis_tresci_main) and nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci_main,tabela_nazw) or pelna_nazwa_ksiazki; if(pelna_nazwa_ksiazki~=pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci)then return 0; end; nazwa_glownego_spisu=parametry_modul.CzyTak(spis_tresci_main) and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci_main,tabela_nazw) or ""; else nazwa_glownego_spisu=""; end; if((not czy_bez_spisow_tresci)and(not czy_bez_analizy_spisow_tresci))then tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); if(przekierowanie_spisu_tresci)then nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,}; end; if((not tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika)or(tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika==0))then return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; end; local IteratorSpisTresci=function() local liczba=1; return function() local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba]; liczba=liczba+1; return spis_tresci; end; end; local iter=IteratorSpisTresci(); tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika; tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer); local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow); if(artykul_spisu_rzeczy)then tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; for spis_tresci in iter do --- if(not parametry_modul.CzyTak(spis_tresci))then return;end; spis_tresci=html_modul.DecodeHtml(spis_tresci,true); spis_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci,[2]="",}; --- tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer); end; end; ---- local IteratorFun=function() local liczba=1; local STRONA=function(liczba)return liczba*2-1;end; local NAZWA=function(liczba)return liczba*2;end; return function() local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)]; local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)]; liczba=liczba+1; return strona,nazwa; end; end; local tablica_stron_ksiazki={}; local tablica_stron_inne={}; local iter=IteratorFun(); local ksiazkawe_modul=require("Module:Książkowe"); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local dodatkowe_artykuly=nil; local tablica_artykulow_zebranych={}; local tab_nazwa_spisow_przekierowaniowych={}; local dodatkowe_artykuly=nil; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne") local tabela_rozdzial_artykulow=nil; ---- local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki) and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"") or nil; local pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil; ---- --local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={}; ---- for strona,nazwa in iter do local function ZbieranieDanychStronZAutonawigacji() if(not parametry_modul.CzyTak(strona))then return;end; strona=html_modul.DecodeHtml(strona,true); nazwa=parametry_modul.CzyTak(nazwa) and html_modul.DecodeHtml(nazwa,true) or nil; if(not dodatkowe_artykuly)then if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end; table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,}); tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow]; end; --- strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,}; local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare) if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end; ---- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]); local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1]; local czy_w_podreczniku=tab_stare[5]; local kod_jezyka_koncowy=czy_table_baza_artykulu and tab_stare[1][5] or nil; local kod_projektu_koncowy=czy_table_baza_artykulu and tab_stare[1][6] or nil; ---- table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,}); ---- table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); end; local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,true,{strona,nazwa,},nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",pelna_nazwa_spisu_tresci_szablonowa,pelna_nazwa_ksiazki,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,tab_nazwa_spisow_przekierowaniowych,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"); end; ZbieranieDanychStronZAutonawigacji(); end; ---- return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci; end; return p; fulcvsiafvymsm0rqa4suh3u8ivq0y3 Śpiewnik/Їхав козак за Дунай 0 59115 545910 485064 2026-06-05T08:34:20Z Persino 2851 /* Przypisy */ 545910 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Opis == Autorem pieśni był Semen Klimowski, XVIII-wieczny poeta kozacki<ref name="kharchyshyn-halczak"> Olha Kharchyshyn, Bohdan Halczak, ''[https://uitp.org.pl/index.php/67-refleksje-nad-geneza-piesni-hej-sokoly Refleksje nad genezą pieśni „Hej sokoły!”]'', Ukraińskie Towarzystwo Historyczne w Polsce, 2020-03-21 [dostęp 2022-0=12-08].</ref>. Melodię opracowali na fortepian m.in. Karol Lipiński, Ludwig van Beethoven (niemiecka wersja pieśni zaczyna się słowami ''Schöne Minka, ich muss scheiden''), Feliks Jaroński i Adolf Sonnenfeld. Daje się zauważyć podobieństwo między melodią pieśni „Їхав козак”, a melodią popularnej piosenki „Hej, sokoły”<ref name="kharchyshyn-halczak"/>. == Muzyka == '''Autor:''' nieznany<br> <score sound="1"> \new Staff { \time 2/4 \clef treble \set Staff.midiInstrument = #"flute" \tempo Andante 4 = 85 \set Score.tempoHideNote = ##t \autoBeamOff | a''8\p a''8 a''8 a''8 | a''8 c'''8 b''8( a''8) | gis''8 gis''8 gis''8 gis''8 | gis''8 b''8 a''8( gis''8) | a''8 a''8 a''8 a''8 | a''8 c'''8 b''8 a''8 | gis''8 e'''8 e'''8 gis''8 | a''4 b'4\rest | c'''8 c'''8 c'''8 c'''8 | c'''8( e'''8) d'''8 c'''8 | b''8 b''8 b''8 b''8 | b''8( d'''8) c'''8 b''8 | a''8 a''8 a''8 a''8 | a''8 c'''8 b''8 a''8 | gis''8 e'''8 e'''8 gis''8 | a''4 b'4\rest } \addlyrics { \small { Ѣ -- хавъ ко -- закъ за Ду -- най, Ска -- завъ: дѣ -- вчи -- но, про -- щай! Ты, ко -- ни -- ку во -- ро -- нень -- кій, Не -- си да гу -- ляй! По -- стой, по -- стой ко -- за -- че, Тво -- я дѣ -- вчи -- на пла -- че, Съ_кѣмъ ты ме -- не по -- ки -- да -- ешъ, То -- лько по -- ду -- май! } } </score> '''Źródło:''' Ludwig van Beethoven, ''[https://imslp.org/wiki/10_National_Airs_with_Variations,_Op.107_(Beethoven,_Ludwig_van) 10 National Airs with Variations, Op.107]'', Bonn, [1820]. Petrucci Music Library (imslp.org) (dostęp 2022-12-08). == Tekst == '''Autor:''' Semen Klimowski / Семен Климовський<br> {{Kolumny|2| <poem> 1. Ѣхавъ козакъ за Дунай, Сказавъ: дѣвчино, прощай! Ты, конику вороненькій, Неси да гулай! ::2. Постой, постой козаче, ::Твоя дѣвчина плаче, ::Съ кѣмъ ты мене покидаешъ — ::Только подумай! 3. Покидаю тебе Богу, Самъ поеду у дорогу. Будь здорова и щаслива, Голубко моя! ::4. Бѣлыхъ ручокъ не ломай, ::Ясныхъ очокъ не зтирай, ::Мене зъ войны зо славою ::К'собѣ дожидай! 5. Не хочу я ничого, Только тебе одного; Ты будь здоров, мой миленькій, А все пропадай! ::6. Свиснувъ козакъ на коня: ::Зоставайся, молода! ::Я приеду, якъ не сгину, ::Черезъ три года... 7. Тебежъ, мила, не забуду, Поки жить на свѣтѣ буду: Колижъ умру на войне, Поплачъ обо мнѣ! </poem> }} '''Źródło:''' Николай Закревский, ''[https://archive.org/details/bandurista-1/page/31/mode/2up?view=theater Старосвҍтскій бандуриста]''. Москва, 1860. (tekst wg zasad XIX-wiecznej ortografii rosyjskiej). == Przypisy == {{Przypisy}} == Zobacz też == {{Wikipedia|en:Ikhav Kozak za Dunaj}} {{Wikipedia|uk:Їхав козак за Дунай}} * ''[https://bibliotekapiosenki.pl/publikacje/Jaronski_Feliks_Jechal_Kozak_za_Dunaj_wyd_2 Jechał Kozak za Dunaj]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] * ''[http://a-pesni.org/ukr/ihavkozak.php ЇХАВ КОЗАК ЗА ДУНАЙ]'' w serwisie [http://a-pesni.org/ a-pesni.org] ey4tuyvhxn5hdlliee1txaexbbjdkgr Śpiewnik/Zielony dzban 0 59131 545909 523668 2026-06-05T08:31:38Z Persino 2851 /* Przypisy */ 545909 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} [[File:William-Adolphe Bouguereau - Le pichet cassé (1891).jpg|thumb|William-Adolphe Bouguereau, ''Stłuczony dzban'' (1891).]] == Muzyka == '''Autor:''' nieznany (melodia ludowa)<br> Aranżacja: Kazimierz Wójcicki (1807–1879)<br> <score raw="1" vorbis="1"> \version "2.20.0" \header{ title = "Zielony dzban" poet = "Słowa: autor nieznany (piosenka ludowa)" meter = "Oprac. Kazimierz Wójcicki (1807–1879)" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Kazimierz Wójcicki (1807–1879)" tagline="" } \score{ << \new Staff \with { midiInstrument = "flute" } \relative g'{ \clef treble \key g \major \time 2/4 \tempo 4=110 \autoBeamOff ^\markup{ \italic { Alegretto } } ^\f g8 b b d | d c c4 | fis,8 a a c | c b b4 | g8 g' g fis | e2 | % --- d8 e d c | b2 | ^\mf g8 b b d | c2 | fis,8 a a c | b4 r \bar "|." } \addlyrics{ \small { Po -- szła Pan -- na po wo -- dę, Mia -- ła pię -- kną u -- ro -- dę, Wy -- ie -- chał -- ci pan I stłukł -- ci iey dzban, Wy -- ie -- chał -- ci pan I stłukł -- ci iey dzban. } } \new PianoStaff{ << \new Staff="RH" \relative c'{ \clef treble \key g \major \time 2/4 \tempo 4=110 _\p r8 <d g b> r <d g b> | r <d fis c'> r <d fis c'> | r <d fis c'> r <d fis c'> | r8 <d g b> r <d g b> | <d g b>2 | <e g c> | % --- <d a' c> | <d g b> | _\pp <g b>4[ d] | <fis c'>[ d] | <fis c'>[ d] | <g b>4 <b, d g> \bar "|." } \new Staff="LH" { \clef bass \key g \major \time 2/4 \tempo 4=110 ^\p g,8 r g r | d r d r | d r d r | g, r g r | b,8[ g g g] | g2 | % --- fis | g | ^\pp g4 r | d r | d r | g, <g, g> \bar "|." } >> } >> \layout{} \midi{} } </score> '''Źródło:''' Kazimierz Wójcicki, ''[https://polona.pl/item/piesni-ludu-bialo-chrobatow-mazurow-i-rusi-z-nad-bugu-z-dolaczeniem-odpowiednich-piesni,OTI4ODc0MDg/52/#metadata Pieśni ludu Biało-Chrobatów, Mazurów i Rusi z nad Bugu z dołączeniem odpowiednich pieśni ruskich, serbskich, czeskich i słowiańskich. T. 1], Warszawa : [s.n.], 1836. S. 43–44. == Tekst == '''Autor:''' nieznany (piosenka ludowa)<br> Opracowanie: Kazimierz Wójcicki (1807–1879)<br> {{Kolumny|2| <poem> 1. Poszła panna po wodę, Miała piękną urodę. Wyjechałci pan I stłukł ci jéj dzban. 2. «Moja panno, nie płaczże, Ja ci ten dzban zapłacę: Talara ci dam Za zielony dzban.» 3. I talara nie chciała, Tylko dzbana płakała: «Mój zielony dzban, Co mi go stłukł pan!» 4. «Moja panno, nie płaczże, Ja tobie dzban zapłacę: Dukata ci dam Za zielony dzban.» 5. I dukata nie chciała, Tylko dzbana płakała: «Mój zielony dzban, Co mi go stłukł pan!» 6. «Moja panno, nie płaczże, Ja tobie dzban zapłacę: Konika ci dam Za zielony dzban.» 7. I konika nie chciała, Tylko dzbana płakała: «Mój zielony dzban, Co mi go stłukł pan!» 8. «Moja panno, nie płaczże, Ja tobie dzban zapłacę: Forysia ci dam Za zielony dzban.» 9. I forysia nie chciała, Tylko dzbana płakała: «Mój zielony dzban, Co mi go stłukł pan!» 10. «Moja panno, nie płaczże, Ja tobie dzban zapłacę: Sam ci się oddam Za zielony dzban.» 11. «Chwała Tobie, z wysokości! Żem dostała jegomości: Za zielony dzban, Dostał mi się pan!»<ref>Koniec téj dumy bywa czasem odmienny. W Mazowszu i na Podlasiu kończą następną strofą:<br> «Wiwat! wiwat! wygrałam,<br> Za dzban, pana dostałam;<br>Za zielony dzban<br>Ja starostę mam!»</ref> </poem> }} '''Źródło:''' Kazimierz Wójcicki, ''[https://polona.pl/item/piesni-ludu-bialo-chrobatow-mazurow-i-rusi-z-nad-bugu-z-dolaczeniem-odpowiednich-piesni,OTI4ODc0MDg/52/#metadata Pieśni ludu Biało-Chrobatów, Mazurów i Rusi z nad Bugu z dołączeniem odpowiednich pieśni ruskich, serbskich, czeskich i słowiańskich. T. 1], Warszawa : [s.n.], 1836. S. 41–45. == Przypisy == {{Przypisy}} == Zobacz też == {{Wikiźródła|Poszła panna po wodę}} {{Wikiźródła|Poszła panna po wodę (Roger)}} * ''[https://bibliotekapiosenki.pl/utwory/Pan_rozbil_dzban Pan rozbił dzban]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] * ''[https://bibliotekapiosenki.pl/utwory/Szla_Kasienka_po_wode Szła Kasieńka po wodę]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] * ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=8397 Szła Marysia po wodę]'' w serwisie [http://antologia.oskarkolberg.pl Antologia polskich pieśni] [http://oskarkolberg.pl/ Instytutu im. Oskara Kolberga] do4vmnkvi0z0mmq6kny0aqb508jirsr Śpiewnik/W okolicznem mieście 0 59139 545861 485073 2026-06-04T21:15:23Z Ashaio 4702 lit. 545861 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Muzyka == '''Autor:''' nieznany (melodia ludowa, z okolic Osterode [Ostródy])<br> Aranżacja: Gustaw Gizewiusz / Oskar Kolberg <score raw="1" vorbis="1"> \version "2.20.0" \header{ title = "W okolicznem mieście" poet = "Słowa: autor nieznany (z okolic Osterode)" meter = "Oprac. Gustaw Gizewiusz / Oskar Kolberg" composer = "Muzyka: autor nieznany (z okolic Osterode)" arranger = "Aranżacja: Gustaw Gizewiusz / Oskar Kolberg" tagline = "" } \score{ \new Staff \with { midiInstrument = "flute" } { \relative c'' { \clef treble \key c \major \time 4/4 \tempo 4 = 120 \autoBeamOff c8 g e c c'4 c8[ e] | d b c a a[ g] g4 | g8 g g b16[ c] d4. c8 | b c d e f4 e8[ d] | e8 d c b c4 d8[ e] | d c b c16[ d] d8[ c] c4 \bar "|." } } \addlyrics { \small { W_o -- ko -- li -- cznem mie -- ście, W_je -- dnej wsi się sta -- ło, Że się dwo -- je lu -- dzi W_so -- bie za -- ko -- cha -- ło, Że się dwo -- je lu -- dzi W_so -- bie za -- ko -- cha -- ło. } } \layout{} \midi{} } </score> '''Źródło:''' Oskar Kolberg, ''[https://polona.pl/item/piesni-ludu-polskiego-serya-i-zebral-i-wydal-oskar-kolberg,MTA5MjczODA/92/#info:metadata Pieśni ludu polskiego : serya I]''. Kraków : nakładem autora, 1892. S. 75 (pieśń 6f). == Tekst == '''Autor:''' nieznany (pieśń ludowa, z okolic Osterode [Ostródy])<br> Oprac. Gustaw Gizewiusz / Oskar Kolberg<br> {{Kolumny|2| <poem> 1. W okolicznem mieście, W jednéj wsi się stało, /Że się dwoje ludzi W sobie zakochało. / ''2x'' 2. I zakochali się, I tak bardzo w sobie, Nie mogli się ostać Godziny bez siebie. 3. Co noc do niej chodził, Pięknie z nią rozmówił, I co jeno wiedział, Wszystko jej powiedział. 4. Jak ci jednej nocy O pierwszej godzinie: „Wstańże Magdalenko, I odprowadź ty mnie!” 5. Magdalenka wstała, Rzewnie zapłakała, Bieluchną chusteczką Oczki ocierała. 6. Odprowadziłąć go Do nowego dworu: „Idźże Matyszeczku, Idź z Bogiem do domu.” 7. A on ci jej mówił, By go dalej wiodła, A ona od żalu Już dalej nie mogła. 8. Odprowadziłać go Aż na rozestanie: „Ja cię tu zabiję, Bo cię nie dostanę. 9. Ja cię nie dostanę, Drugiemu cię nie dam Pod zieloném drzewem To ci pogrzeb oddam.” 10. „O mój Matyszeczku, Kiedy mnie masz zabić, Dajże mi się jeszcze Do Boga pomodlić.” 11. „Ja się nie zmiłuję, Ni się dam uprosić, Bo twoich modlitew Jest u Boga dosyć.” 12. I skoczył jej na kark, Ręce jej załamał, I żadnej litości Nad nią nie okazał. 13. I jak ci ją zabił, Zaraz i pochował, Pod zieloném drzewem Tam jej pogrzeb oddał. 14. Przyszedł do rodziców, Rodzicom obznajmił „Żem ja młynarzównę Magdalenę zabił.” 15. „O mój Matyszeczku, Dobrześ ci ty zrobił, Coś ty młynarzównę Magdalenkę zabił. Dostaniesz ty lepszą, Lepszą i piękniejszą!” 16. „O moi rodzice, Źle wy mnie redzicie, Bo wy w mojém sercu Żałości nie wiécie. Bo ja nie myślę o lepszej Ani o piękniejszej.” 17. Poszedł do młynarzów, Młynarzom obznajmił: „Żem ja dzisiaj w nocy Waszą córkę zabił. 18. Teraz mnie tu macie, Teraz mnie trzymajcie, I jak ja jej dziełał, Wy mnie tak dziełajcie. 19. Ręce mi zetnijcie I kołem mnie bijcie, I żadnej litości Nade mną nie mijcie.” 20. Jużci Matyszeczka Rakarczyki wiodą, Ale Magdalenkę Pacholczyki niosą. 21. Oj niosą ją niosą W czarnym aksamicie, A gdzie wy Matyszka Kaci prowadzicie? 22. Magdalenka leży Pod zielonym drzewem, Matyseczek wisi Na kole pod niebem. 23. A nad Magdalenką Trzy wieńce wiéwają, A nad Matyszeczkiem Trzy kruki krakają. </poem> }} '''Źródło:''' Oskar Kolberg, ''[https://polona.pl/item/piesni-ludu-polskiego-serya-i-zebral-i-wydal-oskar-kolberg,MTA5MjczODA/92/#info:metadata Pieśni ludu polskiego : serya I]''. Kraków : nakładem autora, 1892. S. 75–76 (pieśń 6f). Z adnotacją: „ze zbioru ks. Gizewiusza”. == Zobacz też == {{Wikiźródła|Ä przy jedném mieście}} * warianty ''A w * mieście'' w [http://antologia.oskarkolberg.pl/ Antologii pieśni polskich] [http://oskarkolberg.pl Instytutu im. Oskara Kolberga]: ** ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7954 A pod nowem miastem]'' z okolic Torunia ** ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7952 A w Warszawie, w mieście]'' z Warszawy (Praga) ** ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=7955 Tam za Raszynem]'' z okolic Żelechowa i Gończyc ** ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=8698 W nasym Giebułtowie i cóz ci się stało]'' z Giebułtowa (krakowskie) ** ''[http://antologia.oskarkolberg.pl/pl-PL/Home/Song?id=8112 W radzyskiem miasteczku]'' z okolic Łomży 5lpwmjws1vb9owesg702dmk8mjonrpb Śpiewnik/Cześć polskiej ziemi, cześć 0 59160 545885 499105 2026-06-05T07:32:33Z Persino 2851 /* Przypisy */ 545885 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Opis == Pieśń patriotyczna na melodię ''[[Śpiewnik/God Save the King|God Save the King]]''. == Muzyka == <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Cześć polskiej ziemi, cześć" poet = "Słowa: Feliks Frankowski" composer = "Muzyka: autor nieznany" %arranger = "(Pierwsze wykonanie w 1745 r.)" tagline = "" } \score{ << \new Staff \with { midiInstrument = "flute" } { \tempo 4 = 80 \clef treble \key g \major \time 3/4 \new Voice = "mel" << \relative g' { g4 g a | fis4. g8 a4 | b4 b c | b4. a8 g4 | a4 g fis | g2. | d'4 d d | d4. c8 b4 | c4 c c | c4. b8 a4 | b4 c8[( b]) a[( g]) | b4. c8 d4 | e8[( c]) b4 a | g2. | } \relative g' { d4 e e | d4. e8 fis4 | g4 g a | g4. fis8 e4 | e4 d d | d2. | b'4 b b | b4. a8 g4 | fis4 a fis | <fis a>4. g8 fis4 | g4 g8 s s s | g4. fis8 g4 | g8[( a]) g4 fis | d2. | } \relative c' { b4 b c | s4. d8 d4 | d4 e e | d4. c8 b4 | c4 b c | b2. | g'4 g g | g4. a8 d,4 | d4 d d | d4. d8 d4 | d4 e8[( d]) c[( b]) | d4. d8 d4 | e8[( e]) d4 c | b2. | } >> } \addlyrics { Cześć pol -- skiej zie -- mi, cześć, Oj -- czy -- źnie na -- szej cześć, Cześć Pol -- sce, cześć! Kto się jej sy -- nem zwie, W_kim pol -- ska du -- sza wre, Niech sta _ -- nie _ w_gro -- no te Pieśń _ chwa -- ły wznieść. } \new PianoStaff << \new Staff = "RH" { \tempo 4 = 80 \clef treble \key g \major \time 3/4 % tu prawa ręka \new Voice = "mel2" << \relative g' { g4 g a | fis4. g8 a4 | b4 b c | b4. a8 g4 | a4 g fis | g2. | d'4 d d | d4. c8 b4 | c4 c c | c4. b8 a4 | b4 c8[ b] a[ g] | b4. c8 d4 | e8[ c] b4 a | g2. | } % \relative g' { % d4 e e | d4. e8 fis4 | % g4 g a | g4. fis8 e4 | % e4 d d | d2. | % b'4 b b | b4. a8 g4 | % fis4 a fis | <fis a>4. g8 fis4 | % g4 g8 s s s | g4. fis8 g4 | % g8[ a] g4 fis | d2. | % } \relative c' { b4 b c | s4. d8 d4 | d4 e e | d4. c8 b4 | c4 b c | b2. | g'4 g g | g4. a8 d,4 | d4 d d | d4. d8 d4 | d4 e8[ d] c[ b] | d4. d8 d4 | e8[ e] d4 c | b2. | } >> } \new Staff = "LH" %\relative c { \clef bass \key g \major \time 3/4 % tu lewa ręka <g, g>4 <e, e> <c, c> | <d, d>2 <d, d>4 | <g, g>4 <e, e> <c, c> | <d, d>4. <dis, dis>8 <e, e>4 | <c, c>4 <d, d> <d, d> | <g, g>2. | g,4 b, d | <g, g>2 <g, g>4 | d4 fis a | d2 d4 | <g, g>4 <g, g> <g, g> | <g, g>4. <a, a>8 <b, b>4 | c'8[( c]) d4 <d, d> | <g, g>2. | } >> >> \midi{} \layout{} } </score> '''Źródło:''' ''[https://en.wikisource.org/wiki/Index:Childs_own_music_book.djvu The Child's Own Music Book]'', New York : Mumil Publishing Co., Inc., 1918, [https://en.wikisource.org/w/index.php?title=Page:Childs_own_music_book.djvu/287&action=edit&redlink=1 s. 279]. Tekst za: Franciszek Barański, ''[https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-cz-1-2,OTMzNDYyMjk/216/#info:metadata Jeszcze Polska nie zginęła! : pieśni patryotyczne i narodowe. Cz. 1-2]''. Lwów : Księgarnia Polska B. Połonieckiego, [post 1910]. S. 29–31 (pieśń 7). == Tekst == '''Autor:''' Feliks Frankowski<br> {{Kolumny|3| <poem> 1. Cześć polskiej ziemi, cześć, Ojczyźnie naszej cześć, ::::Cześć Polsce, cześć! ::Kto się jej synem zwie, ::W kim polska dusza wre, ::Niech stanie w grono te ::::Pieśń chwały wznieść. 2. Nie zawsze jarzma srom Uciskał Chrobrych dom – ::::Był lepszy wiek. ::Nie zawsze lew ten spał, ::Trzy berła w ręku miał, ::Tysiączne klęski siał, ::::Nim w boju legł. 3. Nie zawsze obcy lud Bój z naszą hańbą wiódł ::::Wśród naszych ścian. ::I Polak w Moskwie był, ::I on był groźnym z sił, ::I przed nim czołem bił ::::Dzisiejszy pan. 4. Nie chełp się, wrogu nasz, Że nas w swym ręku masz ::::Jak jeńców swych. ::Do bram Zamościa bież, ::Gostyńskich spytaj wież, ::Niech rzekną, jeśli chcesz, ::::Kto siedział w nich<ref>W Zamościu siedział początkowo Arcyksiążę Maksymililan wzięty do niewoli w bitwie pod {{Roz|Byczyną}} przez Jana Zamojskiego; – w Gostyniu siedzieli Carowie Moskiewscy Szujscy – oprowadzaniui w tryumfie przez Stanisława Zółkiewskiego w murach Warszawy.</ref> 5. Złyś, carze, obrał dach, Gdzie tron miał stary Lach, ::::Zły dom tu wasz – ::Tu nigdy nie był Rus, ::Lecz gdzie zwalony w stós ::Dominikański gruz – ::::to tron jest wasz<ref>Kościół Dominikanów zwalony, gdzie dziś jest dom Towarzystwa Warszawskiego Przyjaciół Nauk; tu mieli grobowiec carowie Szujscy.</ref>. 6. Dwugłowy Carów znak I nasz wolności ptak ::::Źle z sobą współ – ::Naszego noc ta ćmi, ::Wasz zaś przed światłem drży; ::Kto spoił związek zły, ::::Sam wpadnie w dół. 7. Chcesz Niemcze zniemczyć nas, Chcesz, by z innemi wraz ::::Duch Polski zgasł. ::Wszakżeś to winien nam, ::Że nie sturczałeś sam, ::Że byt wiedeńskich bram ::::Trwa dotychczas. 8. Urągasz się dziś nam Że lud upadł sam, ::::Nędzniku, stój! ::Spojrzyj na Pole Psie, ::Tam nie urąga się, ::Lecz kark przed nami gnie ::::Poprzednik twój 9. Zebrany z naszych skib Rozdajesz nam dziś chleb – ::::Mniej łaski, mniej! ::Dzisiejsze dary weź, ::A to nam raczej wskrześ, ::Co padło w Pragską rzeź, ::::Też z łaski twej. 10. Zły płodzie obcych zdrad, Coś pierwszy skłonił świat ::::Rozszarpać nas – ::Nie długo będziesz rósł, ::Wiesz, jaki zdajców los, ::I w ciebie zemsty cios ::::Paść musi raz. 11. Nad nas się wznosisz dziś, Chociaż powinienbyś ::::Hołd oddać nam. ::Bezpiecznie sobie drwij, ::Polak nie zajrzy ci ::Niewielkiej chwały twej ::::ni twoich plam. 12. Wprzód Polski sługą był, Z jej chleba nabrał sił, ::::A dziś ją lży. ::Niech to w pamięci ma, ::Że los dziwacznie trwa, ::Gdy minie dola zła, ::::Niech nędzny drży. 13. Ojciec na własną krew Wrodzonym czuciom wbrew ::::Nie zbroi rąk. ::Nie jesteś ojciec nasz, ::Źle głaszcze ręka taż, ::Coś nią wprzód naród nasz ::::W kibitki wrzągł. 14. Urąga harda dzicz, Że na swej zemsty bicz ::::Bóg wybrał ją. ::Może przebaczy Bóg, ::Tak jak i skarać mógł, ::A wtenczas niech drży wróg ::::Za hardość swą. 15. Ślad dziejów zatrzeć chce, Zaprzecza hardy Rus ::::Ohydy swe: ::Zatrzyjcie ziemię tę, ::Przez którą cary twe ::Emilski ciągnąc wóz ::::W kajdanach szły. 16. O zgrozo! ruski car W polskie się berło wparł, ::::Precz z obcym, precz! ::Dla Polski, póki świat, ::Nie będzie w obcym brat; ::Kto przez miecz na tron siadł, ::::Zsiądzie przez miecz. 17. Uderzmy w trwogi dzwon, Przez łaski te, nam zgon, ::::Sposobi wróg! ::Łaskami wiąże nas, ::By duch zawiści zgasł, ::By złagodzonych raz ::::Wiek dzierżyć mógł. 18. Chcesz nas oswoić z tym, Żeśmy lud bratni z nim; ::::Precz obcy, precz! ::Dla Polski, pókiświat, ::W najeźdźcy nie jest brat, ::Kto przez miecz na tron siadł, ::::Zsiądzie przez miecz! 19. Sieroty wpadły w błąd, Macoszyn wielbią rząd, ::::W jarzmo się gną. ::Zahuczał groźny grom, ::Z podziwem przodkó dom ::Zatrząsł się na ten srom, ::::Szląc wróżbę złą. 20. Odwróćmyż ciężki raz, Cień Matki przeklnie nas, ::::Na zemsty miecz. ::Przez ohydny z wrogiem ślub ::Krzywdzim ojczyzny grób, ::Powstania wznieśmy słup: ::::Precz z obcym, precz! 21. Dopókiż obcy lud Rej u nas będzie wiódł ::::Na Polski srom? ::O ziomku! wstyd mój znaj, ::Wszak to nie Moskwy kraj, ::A pełen obcych zgraj, ::::Jak próżny dom. 22. Odzyskać trzeba cześć, Kościuszki szablę wznieść ::::Na wrogów zgon. ::Bracia, przysiężmy raz, ::Że wolim zginąć wraz, ::Niż znosić pośród nas ::::Ten obcy tron. 23. Odzyskać trzeba cześć<ref>Zwrotki śpiewano podczas ślubowania burszów polskich w r. 1831.</ref>, Kościuszki szablę wznieść ::::Na wrogów zgon. ::Wykonaj bratni ślub, ::Burszowski obrzęd zrób, ::Tem wtrącim wroga w grob, ::::Gdy zabrzmi dzwon. 24. Broń tę do ręki weź, Wolności czapkę wznieś ::::I przebij ją! ::Burszu, przysięgnij nam ::Wprzód życia zrzec się sam, ::Niżbyś dopuścił plam ::::Na wierność twą. JEDEN: 25. Dla mego kraju żyć, Niezłomnym burszem być ::::Przysięgam wam. ::Dotrzymać tego chcę, ::Przebijam czapkę tę; ::Gdy przeniewierzę się, ::::Niech przepaść mam. WSZYSCY: 26. Już nasze serca ma, Niech bratnią rękę da, ::::Wypijmy z nim. ::Weź bracie, weź i pij, ::Dla dobra kraju żyj, ::Trwaj w niezłomności tej ::::Wraz z bratem twym. </poem> }} '''Źródło:''' Franciszek Barański, ''[https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-cz-1-2,OTMzNDYyMjk/216/#info:metadata Jeszcze Polska nie zginęła! : pieśni patryotyczne i narodowe. Cz. 1-2]''. Lwów : Księgarnia Polska B. Połonieckiego, [post 1910]. S. 29–31 (pieśń 7). == Przypisy == {{Przypisy}} == Zobacz też == {{Wikiźródła|Cześć polskiej ziemi, cześć}} * ''[https://bibliotekapiosenki.pl/utwory/Czesc_polskiej_ziemi_czesc Cześć polskiej ziemi, cześć]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblitoeka Poslkiej Piosenki] govy2qrfihthandetk2rc0xwmd78l6g Śpiewnik/Wojenko, wojenko 0 59163 545906 494318 2026-06-05T08:27:21Z Persino 2851 /* Przypisy */ 545906 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Opis == Bogusław Szul-Skjöldkrona tak pisał o tym utworze w ''Piosenkach leguna tułacza'': W sierpniu 1917 na ćwiczeniach zasłyszałem nową melodyę nieznaną mi w swojej kompanii (3 pp.) mocno tem zdziwiony (jako, że taki piosenkarz, jak ja, wszytkie znać powinien) przysłuchałem się, przyłączyłem do śpiewu, a potem pytam: Skądeście wzięli tę piosenkę? „Niewiadomo panie poruczniku, to któraś inna kompania śpiewała, tośmy się nauczyli”. W trzy tygodnie później już znały tę piosenkę całe legiony. Dziś to jedna z najwięcej śpiewanych i najpiękniejszych, a bezimiennych piosenek.<ref>Bogusław Szul-Skjöldkrona, ''[https://polona.pl/item/piosenki-leguna-tulacza,MTIyNjY5MTA1/32/#info:metadata Piosenki leguna tułacza]''. Warszawa : [s.n., post 1918]. S. 25 (pieśń 24).</ref> Piosenka występuje w opowiadaniu Władysława Reymonta ''[[s:Wojenko, wojenko, cóżeś ty za pani!|Wojenko, wojenko, cóżeś ty za pani!]]''. == Muzyka == '''Autor:''' nieznany (melodia ludowa)<br> <score raw=1 vorbis=1> \version "2.20.0" \header{ tagline = "" } melodia = \new Staff \with { midiInstrument = "flute" } { \relative c' { \clef treble \key bes \major \time 4/4 \tempo 4 = 120 \autoBeamOff f4. d8 es4 f | es4 d r2 | bes'4. a8 c4 g | g f r2 | \repeat volta 2 { f4. f8 g a bes c | d4. d8 c bes a g f4. d8 es4 f | es4 d r2 | } } } \score{ \melodia \layout{} } \score{ \unfoldRepeats \melodia \midi{} } </score> '''Źródło:''' Bogusław Szul-Skjöldkrona, ''[https://polona.pl/item/piosenki-leguna-tulacza,MTIyNjY5MTA1/184/#info:metadata Piosenki leguna tułacza]''. Warszawa : [s.n., post 1918]. S. 179 (pieśń 132). == Tekst == '''Autor:''' nieznany<br> (według niektórych opracowań: Feliks Gwiżdż<ref>{{Cytuj|tytuł = Wojenka (pieśń legionowa) | url = https://bibliotekapiosenki.pl/utwory/Wojenka_(piesn_legionowa) | opublikowany = BibliotekaPiosenki.pl | data dostępu = 2022-12-29}}</ref>) {{Kolumny|2| <poem> 1. Wojenko, wojenko, cóżeś ty za pani, Że ku tobie idą (że ku tobie idą) Chłopcy malowani? 2. Chłopcy malowani, chłopcy wybierani, Wojenko, wojenko, ''2x'' Cóżeś ty za pani? 3. Wojenko, wojenko, Wojenko szalona, Kogóż ty pokochasz, ''2x'' Jeśli nie legona? 4. Jeśli nie legona, Jeśli nie piechura, Bo za tobą idzie ''2x'' Relutonów chmura. 5. Jeśli nie piechura, Jeśli nie ułana, Wojenko, wojenko, ''2x'' Nasza ukochana. 6. Wojenko, wojenko, Szanuj swych rycerzy. Kto ciebie pokocha, ''2x'' Wkrótce w grobie leży. 7. W zimnym grobie leży, Z dala od rodziny, A po nim zostaje (a po nim zostaje) Cichy płacz dziewczyny. </poem> }} '''Źródło:''' Bogusław Szul-Skjöldkrona, ''[https://polona.pl/item/piosenki-leguna-tulacza,MTIyNjY5MTA1/32/#info:metadata Piosenki leguna tułacza]''. Warszawa : [s.n., post 1918]. S. 25 (pieśń 24). == Przypisy == {{Przypisy}} == Zobacz też == {{Wikiźródła|Wojenko, wojenko}} * ''[https://bibliotekapiosenki.pl/utwory/Wojenka_(piesn_legionowa) Wojenka (pieśń legionowa)]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa BIblioteka Polskiej Piosenki] * ''[https://www.spiewnikniepodleglosci.pl/teksty/tekst-utworu-wojenko-wojenko/ Wojenko, wojenko]'' w serwisie [https://www.spiewnikniepodleglosci.pl Śpiewnik Niepodległości] ghpgfirbuzkfuf09pq655dlkq6ees9u Śpiewnik/Bartoszu, Bartoszu 0 59164 545883 485090 2026-06-05T07:28:12Z Persino 2851 /* Przypisy */ 545883 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Muzyka == '''Autor:''' nieznany<br> <score raw="1" vorbis="1"> \version "2.20.0" \header{ title = "Bartoszu, Bartoszu" poet = "Słowa: autor nieznany" %meter = "Opracowanie:" composer = "Muzyka: autor nieznany (melodia ludowa)" %arranger = "Aranżacja:" tagline = "" } global = { \key g \major \time 2/4 \tempo 4=120 } \score{ \new PianoStaff << \new Staff = "RH" \relative c'' { \clef treble \global \autoBeamOff % tu prawa ręka g8 <g b> <g b d>4 | g8 <g b> <g b d>4 | <g c e>8 <g c e>4 <g c e>8 | <g b d>8 e'16[ d] b8 g | <g c e>8 <g c e>4 <g c e>8 | <g b d>8 e'16[ d] b8 g | <fis a>8 <a c> <g b> <fis a> | <g b d>8 r <d g>4-> | <c d fis>8 g' a4 | <g b>8 <g b d>4 <g b>8 | <fis a>8 <a c> <g b> <fis a> | <g b d>8 r <d g>4-> | <c d fis>8 g' a8. fis16 | <b, d g>8 <b d g>4 r8 \bar "|." } \addlyrics { \small { % tu liryka Bar -- to -- szu, Bar -- to -- szu, Oj nie trać -- wa na -- dzie -- i, Oj nie trać -- wa na -- dzie -- i: Bóg po -- bło -- go -- sła -- wi, Oj -- czy -- znę nam zba -- wi; Bóg po -- bło -- go -- sła -- wi, Oj -- czy -- znę nam zba -- wi. } } \new Staff = "LH" { \clef bass \global % tu lewa ręka <g b d'>8[ <g b d'>] <g b d'>4 | <g b d'>8[ <g b d'>] <g b d'>4 | <c e g c'>8 <c e g c'>4 <c e g c'>8 | g,8[ <d g b> <d g b> <d g b>] | <c e g c'>8 <c e g c'>4 <c e g c'>8 | g,8[ <d g b> <d g b> <d g b>] | d8[ <fis a c'>] d8[ <fis a c'>] | <d g b>8 r <d g b>4 | d8[ <fis c'>] d8[ <fis c'>] | g8[ <b d'> <b d'> <b d'>] | d8[ <fis a c'>] d8[ <fis a c'>] | <d g b>8 r <d g b>4 | d8[ <fis a c'>] d8[ <fis a c'>] | <g, g>8 <g, g>4 r8 \bar "|." } >> \midi{} \layout{} } </score> '''Źródło:''' Franciszek Barański, ''[https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-cz-1-2,OTMzNDYyMjk/15/#info:metadata Jeszcze Polska nie zginęła! : pieśni patryotyczne i narodowe. Cz. 1-2]''. Lwów : Księgarnia Polska B. Połonieckiego, [post 1910]. S. 10 (pieśń 12). == Tekst == '''Autor:''' nieznany<br> (niektóre źródła podają jako autora Marcelego Skałkowskiego (1818–1846)<ref>{{Cytuj|tytuł = Krakowiak Kościuszki - Utwory| url=https://bibliotekapiosenki.pl/utwory/Krakowiak_Kosciuszki | opublikowany = BibliotekaPiosenki.pl | data dostępu = 2022-12-29}}</ref><br> {{Kolumny|2| <poem> 1. Bartoszu, Bartoszu, Oj nie traćwa nadziei ''2x'' /Bóg pobłogosławi, Ojczyznę nam zbawi./ ''2x'' 2. Tam w górę, tam w górę, Poglądaj do Boga, Większa miłość jego, Niźli przemoc wroga. 3. Z maleńkiej iskierki Wielki ogień bywa. Oj pekną, choć twarde Przemody ogniwa. 4. Oj ostre! oj ostre, Ostre kosy nasze, Wystarczą na krótkie Moskiewskie pałasze. 5. Kiliński był szewcem, Podburzył Warszawę, Wyprawił Moskalom Weselisko krwawe. 6. Nauczył Kościuszko Pod Racławicami, Jak siekierą, kosą Rozprawiać z wrogami. 7. Bóg nam dał, Bóg nam dał Kraj wielki, bogaty, W nim Głowackich wiele Brać ruskie armaty. 8. Wszystko wziął podły wróg I wiarę nam kłóci, Myśli, że nas duszą Do siebie nawróci. 9. Nie chcemy berlińskiej, Petersburskiej wiary, Bóg nam dopomoże Pobić króle, cary! </poem> }} '''Źródło:''' Franciszek Barański, ''[https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-cz-1-2,OTMzNDYyMjk/252/#info:metadata Jeszcze Polska nie zginęła! : pieśni patryotyczne i narodowe. Cz. 1-2]''. Lwów : Księgarnia Polska B. Połonieckiego, [post 1910]. S. 65 (pieśń 12). == Przypisy == {{Przypisy}} == Zobacz też == {{Wikiźródła|Krakowiak Kościuszki}} * ''[https://bibliotekapiosenki.pl/utwory/Krakowiak_Kosciuszki Krakowiak Kościuszki]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] jp6d0iydyqmtvvds7e4ro0uqc1hlaa1 Śpiewnik/Zdrowaś bądź Maryja 0 59168 545908 485092 2026-06-05T08:30:16Z Persino 2851 /* Przypisy */ 545908 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Opis == Pieśń adwentowa, rozwinięcie modlitwy ''Zdrowaś Mario''. Mioduszewski dodaje do niej następującą uwagę: Pieśń ta śpiewana bywa na Roratach. Po każdej strofie prozy łacińskiej: ''Mittit ad Virginem'', śpiewa się jedna lub dwie strofy tej pieśni.<ref>Michał M. Mioduszewski, ''[https://polona.pl/item/spiewnik-koscielny-czyli-piesni-nabozne-z-melodyjami-w-kosciele-katolickim-uzywane-a-dla,MjgyMzk4NTE/23/#info:metadata Śpiewnik kościelny czyli Pieśni nabożne z melodyjami w kościele katolickim używane]''. Kraków : w Drukarni Stanisława Gieszkowskiego, 1838. S. 20 (pieśń 7).</ref> == Muzyka == '''Autor:''' nieznany<br> Aranżacja: Michał M. Mioduszewski (1787–1868)<br> <score raw="1" vorbis="1"> \version "2.20.0" \header{ title = "Zdrowaś bądź Maryja" poet = "Słowa: autor nieznany (pieśń kościelna)" composer = "Muzyka: autor nieznany" arranger = "Aranżacja: Michał M. Mioduszewski (1787–1868)" tagline = "" } \score{ \new Staff \with { midiInstrument = "church organ" } { \relative c {\clef bass \key f \major \time 4/4 \stemUp f4 f a b | \stemDown c2 c | d4 e f c | a( b) c2 | \break \stemUp bes4 g a bes | a( g) f2 | e4 f g a | g2 c, | \break f4 g a f | \stemDown c' d c2 | \stemUp f,4 g a bes | a( g) f2 \bar "." } \addlyrics { \small { \markup { \bold Zdro} -- \markup { \bold waś } \markup { \bold bądź }Ma -- ry -- ja, Nie -- bies -- ka li -- li -- ja, Pa -- nu Bo -- gu mi -- ła, Mat -- ko li -- toś -- ci -- wa. Tyś jest na -- sza u -- ciecz -- ka, Naj -- święt -- sza Ma -- ry -- ja. -- } } } \layout{} \midi{ \tempo 4 = 100 } } </score> '''Źródło:''' Michał M. Mioduszewski, ''[https://polona.pl/item/spiewnik-koscielny-czyli-piesni-nabozne-z-melodyjami-w-kosciele-katolickim-uzywane-a-dla,MjgyMzk4NTE/23/#info:metadata Śpiewnik kościelny czyli Pieśni nabożne z melodyjami w kościele katolickim używane]''. Kraków : w Drukarni Stanisława Gieszkowskiego, 1838. S. 20 (pieśń 7). == Tekst == '''Autor:''' nieznany<br> Opracowanie: Michał M. Mioduszewski (1787–1868)<br> {{Kolumny|2| <poem> 1. '''Zdrowaś bądź''' Maryja, Niebieska lilija, ::Panu Bogu miła, Matko litościwa. ::Tyś jest nasza ucieczka, Najświętsza Maryja. 2. '''Maryja''' wielebna, Ukaż drogę pewną, ::Przykazania twego, Boga wszechmocnego, ::On ci wszystka nadzieja, Zbawienia naszego. 3. '''Łaskiś''' pełna pańskiej, Czystości anielskiej, ::Pannaś nad Pannami, Święta nad świętemi, ::O Najświętsza Maryja, Módl się dziś za nami. 4. '''Pełna''' wszech światłości, Wielkiej pokorności, ::Bez grzechuś poczęła, Wielkąś sławę wzięła, ::Przez twoje narodzenie, Wziął świat pocieszenie. 5. '''Pan''' stworzył Adama, Ludzkiego plemienia ::Ojca, Ewę matkę, Co zgrzeszyli jabłkiem; ::Aleś ty naprawiła, Co Ewa straciła. 6. '''Z tobą''' był Duch święty, Syn Boży poczęty ::W twym żywocie czystym, Trójcy świętej miłym, ::I z ciebie się narodził, Obyczajem dziwnym. 7. '''Błogosławionaś''' ty, Nad wszystko stworzenie, ::Pan Bóg wszechmogący, Dał przez cię zbawienie, ::Jezus Syn twój odkupił, Wszystko ludzkie plemię. 8. '''Tyś''' jest litościwa, Matka nasza miła, ::Jaśniejsza nad słońce, W najświętszej zasłudze, ::W twojejci są obronie, Wszyscy grzeszni ludzie. 9. '''Między niewiastami''', Czystemi Pannami, ::Tyś sama najczystsza, Królowa Anielska, ::Nie była Panu Bogu, Żadna nad cię milsza. 10. '''Błogosławion owoc, Żywota twojego''' ::'''Jezus''' miłościwy, Syn Boga żywego, ::Bądźże jemu cześć, chwała, Z dobrodziejstwa jego. 11. Twoje zmiłowanie, Jezu Chryste Panie, ::Racz dać ludu twemu, Tu dziś zebranemu, ::Przez zasługi Matki twej, Domieść chwały wiecznej. 12. '''Amen''' wszyscy rzeczmy, Wierni chrześcijanie, ::Cośmy się tu zeszli, Ku chwale tej Pannie, ::Zachowaj nas od złego, Twojemi prośbami. </poem> }} '''Źródło:''' Michał M. Mioduszewski, ''[https://polona.pl/item/spiewnik-koscielny-czyli-piesni-nabozne-z-melodyjami-w-kosciele-katolickim-uzywane-a-dla,MjgyMzk4NTE/24/#info:metadata Śpiewnik kościelny czyli Pieśni nabożne z melodyjami w kościele katolickim używane]''. Kraków : w Drukarni Stanisława Gieszkowskiego, 1838. S. 20–21 (pieśń 7). == Przypisy == {{Przypisy}} == Zobacz też == {{Wikiźródła|Zdrowaś bądź Maryja (1838)}} * ''[https://bibliotekapiosenki.pl/utwory/Zdrowas_badz_Marya Zdrowaś bądź Marya]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] ktc1jq9dej7xem4u02hrayvsspli6ia Śpiewnik/Słynie Gopło i Kruszwica 0 59173 545898 485096 2026-06-05T08:06:42Z Persino 2851 /* Przypisy */ 545898 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Muzyka == '''Autor:''' nieznany<br> <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Słynie Gopło i Kruświca" poet = "Słowa: [Ignacy] Danielewski" composer = "Muzyka: autor nieznany" tagline = "" } \score{ \relative g' { \clef treble \key g \major \time 3/4 \tempo 4 = 90 \autoBeamOff g16 b d8. b16 | d16 b d8 e | a,16 a \tuplet 3/2 { c16([ a c)] } e16 | d16 \grace {e8} d16 b8 g | d16 fis a8. e'16 | d16 \grace {e8} d16 b8 g | b16 d d8. e16 | a,16 \grace {b8} a16 fis8 d \bar "|." } \addlyrics { \small { Sły -- nie Go -- pło i Kru -- świ -- ca, A w_nich Piast nasz, gdy -- by świe -- ca, Ko -- ło -- dziej -- ką za -- pra -- co -- wał, Chle -- bem, król -- mi o -- bda -- ro -- wał. } } \layout{} \midi{} } </score> '''Źródło:''' Nadwiślanin [Ignacy Danielewski], ''[https://polona.pl/item/spiewnik-dla-przemyslowcow,OTM4NTAxNzg/34/#info:metadata Śpiewnik dla przemysłowców]''. Gniezno : J. B. Langie, [ca 1895]. S. 29 (pieśń 22). == Tekst == '''Autor:''' [Ignacy] Danielewski<ref>{{Cytuj | autor = Józef Borzyszkowski | tytuł = Ignacego Danielewskiego „Śpiewnik dla przemysłowców” z końca XIX wieku | czasopismo = Pomerania | numer = 483 | wolumin = 1 | data = 2015-01 | url = http://bibliotekacyfrowa.eu/Content/50486/54305.pdf | s = 18–20}} </ref><br> {{Kolumny|2| <poem> 1. Słynie Gopło i Kruświca, A w nich Piast nasz, gdy by świeca, Kołodziejką zapracował, Chebem, królmi obrarował. 2. Człek, jak bryła, lgnie do ziemi, A kołodziej sztuki swemi Wartkie koła daje osi, Co ciężary w pędzie nosi. 3. Nosi ciężar, nosi ciebie Na zabawy lub w potrzebie, Do świętego do kościoła, Żywych, zmarłych noszą koła. 4. A kołodziej w czoła pocie Myśli sobie przy robocie: Wszystko w świecie idzie kołem, Dziś człek górą, jutro dołem. 5. Myśli sobie, westchnie szczerze, Co tam Bóg da, na się bierze, Bo gdy szczęście kołem idzie, To i na nas kolej przyjdzie. </poem> }} '''Źródło:''' Nadwiślanin [Ignacy Danielewski], ''[https://polona.pl/item/spiewnik-dla-przemyslowcow,OTM4NTAxNzg/34/#info:metadata Śpiewnik dla przemysłowców]''. Gniezno : J. B. Langie, [ca 1895]. S. 29 (pieśń 22). == Przypisy == {{Przypisy}} dg84dj3hx63xvfc9tj9rq21wks33k9y Śpiewnik/Staropolskie zaloty 0 59199 545899 485097 2026-06-05T08:09:48Z Persino 2851 /* Przypisy */ 545899 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Opis == Parodia pieśni kościelnej ''Niech będzie Jezus Chrystus pochwalony'', notowanej przez ks. Michała M. Miduszewskiego w ''Śpiewniku kościelnym'' wydanym w 1838 roku<ref>Michał M. Mioduszewski, ''[https://polona.pl/item/spiewnik-koscielny-czyli-piesni-nabozne-z-melodyjami-w-kosciele-katolickim-uzywane-a-dla,MjgyMzk4NTE/273/#info:metadata Śpiewnik kościelny czyli Pieśni nabożne z melodyjami w kościele katolickim używane]''. Kraków : w Drukarni Stanisława Gieszkowskiego, 1838. S. 270 (pieśń XIV).</ref>. Organista Stefan Surzyński ułożył aranżację tej pieśni na 4 głosy<ref> Stefan Surzyński, ''[https://polona.pl/item/harfiarz-zbior-piesni-patryotycznych-i-narodowych-na-cztery-meskie-glosy-serya-3,NTMzNDM3NjA/131/#info:metadata "Harfiarz" : zbiór pieśni patryotycznych i narodowych : na cztery męskie głosy. Serya 3]''. Tarnów : J. Pisz, 1896. S. 118–119 (pieśń 53).</ref>. Leon Schiller włączył skróconą wersję tego utworu z częściowo zmienioną melodią do widowiska ''Kram z piosenkami''<ref>Leon Schiller, ''Kram z piosenkami : obrazki śpiewające''. Warszawa : Wydawnictwa Artystyczne i Filmowe, 1977. S. 56–57.</ref>. == Muzyka == '''Autor:''' nieznany<br> Melodia pieśni kościelnej<br> (Notuje Mioduszewski w 1838 r.)<br> <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Staropolskie zaloty" poet = "Słowa: autor nieznany (przed 1896 r.)" composer = "Muzyka: autor nieznany (pieśń kościelna; przed 1838 r.)" arranger = "Aranżacja: Stefan Surzyński (1855–1919)" tagline = "" } global = { \key bes \major \time 3/4 \tempo 4 = 100 } melodia = \new ChoirStaff << \new Staff = "RH" \with { midiInstrument = "viola" } { \clef treble \global << \new Voice = "sop" \relative c'' { \stemUp \autoBeamOff ^\mf f8 f f d es c | bes d d bes c f, | f' f f d es c | bes d d bes c f, | ^\f \repeat volta 2{ bes4 bes8 bes ^\< c d | es f \! g2 \fermata | ^\> f4 f8 d es c \! | } \alternative{ { a8 c bes2 | } { d8 c bes2 \bar "|." } } } \new Voice = "alt" \relative c'' { \stemDown \autoBeamOff _\mf f8 f f d es c | bes bes bes bes a f | f'8 f f d es c | bes a bes bes g f | _\f \repeat volta 2{ bes4 bes8 bes c b | c d es2 _\fermata | es4 d8 d c c | } \alternative{ { a8 a bes2 | } { a8 a bes2 \bar "|." } } } >> } \addlyrics { \small { Nie -- chaj Je -- zus Chry -- stus bę -- dzie po -- chwa -- lo -- ny, Z_ser -- cem go -- re -- ją -- cem przy -- by -- wam w_te stro -- ny. Jak do -- ku -- czli -- we in -- se -- kta, Ser -- ce o -- pa -- dły a -- fe -- kta, a -- fe -- kta. } } \new Staff = "LH" \with { midiInstrument = "cello" } { %\relative c { \clef bass \global << \new Voice = "ten" { \stemUp \autoBeamOff f8 g a bes g a | bes a g ges f f | bes a as g g ges | fis fis g f e es | ^\f \repeat volta 2{ d4 g8 g g g | g bes bes2 \fermata | a4 as8 g g ges | } \alternative{ { f8 es d2 | } { f8 es d2 \bar "|." } } } \new Voice = "bss" { \stemDown \autoBeamOff _\mf f8 f f f f f | bes a g ges f f | bes, bes, bes, b, c es | d d g g, c a, | _\f \repeat volta 2{ bes,4 g8 f _\< es d | c bes \! es2 _\fermata | _\> c4 c8 b, c es \! | } \alternative{ { f8 f, bes,2 | } { f8 f, bes,2 \bar "|." } } } >> } >> \score{ \melodia \layout{} } \score{ \unfoldRepeats \melodia \midi{} } </score> '''Źródło:''' Stefan Surzyński, ''[https://polona.pl/item/harfiarz-zbior-piesni-patryotycznych-i-narodowych-na-cztery-meskie-glosy-serya-3,NTMzNDM3NjA/131/#info:metadata "Harfiarz" : zbiór pieśni patryotycznych i narodowych : na cztery męskie głosy. Serya 3]''. Tarnów : J. Pisz, 1896. S. 118–119 (pieśń 53). == Tekst == '''Autor:''' nieznany<br> {{Kolumny|2| <poem> 1. Niechaj Jezus Chrystus będzie pochwalony, Z sercem gorejącem przybywam w te strony; ::/Jak dokuczliwe insekta, ::Serce opadły afekta./ ''2x'' 2. Powiedzże mi prawdę, Aśćko miłościwa, Czyli nie na próżno konkurent przybywa, ::By ukochanej niewieście ::Wiernym pozostać nareszcie. 3. Powiedz, czy nie próżno serce moje płonie, Czy nie próżno męczę skarogniade konie; ::By niegodziwa rekuza ::Sercu nie dała arbuza. 4. Powiedzże mi proszę szczerym dokumentem, Czyli ja być mogę waszym konkurentem? ::Niech sobie czasu nie żmudzę ::I moich koni nie trudzę. 5. Jeśli Waść żałujesz skarogniadych koni, Afekt mój ku Waści nigdy się nie skłoni. ::Niech konie stoją w stajence, ::Ja sobie Waści nie nęcę. 6. Niechaj Jezus Chrystus będzie pochwalony, Z wielką konfuzyą opuszczam te strony; ::Więcej do Aśćki nie wrócę, ::Gdzie indziej afekt obrócę. 7. Jednakże dlatego nie bądź Waść tak szybki, Po co w obcym stawie szukać sobie rybki? ::Gdy rybka w matnią złapana, ::Czeka przysięgi Waćpana. 8. Niechajże odpoczną konie skarogniade, Sama własną ręką siana im nakładę. ::Jedna im męka zagraża – ::Zaciągnąć nas do ołtarza. 9. Moja dobrodziejko, najmilsza jagódko, Męczyła mię srodze męka twoja krótka. ::Więc się do nóżek twych ścielę, ::Za tydzień nasze wesele. 10. Mości dobrodzieju, nie bądź Waść tak dumny, Musisz mi poprzysiądz wierność aż do trumny, ::I posłuszeństwo bez granic, ::Inaczej nasz związek na nic. 11. I to ma Waść wiedzieć, nie mówiąc nikomu, Że ja zawsze panią będę w swoim domu, ::I trzeba Waści też wiedzieć, ::Że masz w pantoflu siedzieć. 12. Niechaj Jezus Chrystus będzie pochwalony! Od powietrza, ognia i od takiej żony ::Wybawże mię Jezu Chryste, ::Toż to horendum jest czyste. 13. A gdzie się to Aśćka tego nauczyła, Żeby żona męża za nos tak wodziła? ::I pantoflem go straszyła – ::Nic z tego, jagódko miła! 14. Szukaj sobie męża, aż się taki zdarzy, Któremu w pantoflu tak będzie do twarzy; ::Ja słysząc takie androny, ::Gdzie indziej poszukam żony! </poem> }} '''Źródło:''' Stefan Surzyński, ''[https://polona.pl/item/harfiarz-zbior-piesni-patryotycznych-i-narodowych-na-cztery-meskie-glosy-serya-3,NTMzNDM3NjA/131/#info:metadata "Harfiarz" : zbiór pieśni patryotycznych i narodowych : na cztery męskie głosy. Serya 3]''. Tarnów : J. Pisz, 1896. S. 118–120 (pieśń 53). == Przypisy == {{Przypisy}} == Zobacz też == {{Wikiźródła|Śpiewnik kościelny/Niech Jezus Chrystus będzie pochwalony}} m66el1t17ql0dmjxrdlrbdeslqoibeu Śpiewnik/O, gwiazdeczko, coś błyszczała 0 59206 545893 492558 2026-06-05T07:53:18Z Persino 2851 /* Przypisy */ 545893 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} [[File:Night by Edward Burne-Jones (1870).jpg|thumb|Edward Burne-Jones (1833–1898), ''Noc'' (1870). Domena publiczna]] == Opis == Tekst piosenki to wiersz Wiktoryna Zielińskiego, opublikowany w 1842 roku. Do tej samej melodii śpiewa się także kolędę ''[[s:O gwiazdeczko! coś świeciła, nad|O gwiazdeczko, coś świeciła nad stajenką tam]]''. Maria Pawlikowska-Jasnorzewska nawiązała do początkowych słów piosenki w wierszu ''O gwiazdeczko coś błyszczała''<ref>Maria Pawlikowska-Jasnorzewska, ''[https://polona.pl/item/surowy-jedwab,NDEzMzQyNzI/16/#info:metadata Surowy jedwab]''. Warszawa : F. Hoesick, 1932. S. 11.</ref>: <poem> O gwiazdeczko coś błyszczała, wieczór zdobiąc i firmament! — Płyną chmury w groźnych zwałach, i zagasłaś już na amen. Zwróć kochanko coś płakała, piękną głowę w stronę nowiu: o gwiazdeczko coś błyszczała!! — — Błyśniesz jeszcze, zgaśniesz znowu. </poem> Piosenka pojawiła się także w filmie ''Chopin – pragnienie miłości'' z 2002 roku<ref>https://www.discogs.com/release/2450130-Chopin-Pragnienie-Mi%C5%82o%C5%9Bci</ref>. == Muzyka == '''Autor:''' Kazimierz Lubomirski<ref>https://bibliotekapiosenki.pl/utwory/O_gwiazdeczko_cos_blyszczala</ref><br> <score raw="1" vorbis="1"> \version "2.20.0" \header{ title = "O, gwiazdeczko, coś błyszczała" poet = "Słowa: Wiktoryn Zieliński (1814–1866)" %meter = "Opracowanie:" composer = "Muzyka: Kazimierz Lubomirski" %arranger = "Aranżacja: Franciszek Barański" tagline = "" } \score { \new Staff \with { midiInstrument = "fiddle" } { \relative bes' { \clef treble \key bes \major \time 3/4 \tempo 4 = 100 \autoBeamOff bes8. bes16 a4 g | d'8. d16 es4 d | a8. a16 bes4 a | g2 r4 | bes8. bes16 a4 g | d'8. d16 es4 d | a8. a16 bes4 a | g2 r4 \bar "||" f8. f16 g4 f | bes8. bes16 a4 bes | c8. c16 f4 es | d2 r4 | a8. a16 bes4 a | g8. d'16 es4 d | a8. a16 bes4 a | g2 r4 \bar "|." } \addlyrics { \small { O gwia -- zde -- czko, coś bły -- szcza -- ła, Gdym ja uj -- rzał świat, Cze -- muż to tak, gwia -- zdko ma -- ła, Twój pro -- my -- czek zbladł? Cze -- muż mi już tak nie pło -- nie, Jak w_dzie -- cin -- nych dniach, Gdym na ma -- tki i -- grał ło -- nie W_ma -- lo -- wa -- nych snach. } } } \layout{} \midi{} } </score> '''Źródło:''' Melodia na podstawie: Franciszek Barański, ''[https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-cz-1-2,OTMzNDYyMjk/31/#info:metadata https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-cz-1-2,OTMzNDYyMjk/31/#info:metadata]''. Lwów : Księgarnia Polska B. Połonieckiego, [post 1910]. S. 26 (pieśń 28). == Tekst == '''Autor:''' Wiktoryn Zieliński (1814–1866)<br> {{Kolumny|2| <poem> 1. Gwiazdko moja, coś błyszczała, Gdym ja ujrzał świat, Czemu to tak, gwiazdko mała, Twój promyszek zblad'? ::Czemu mi już tak nie płonie, ::Jak w dziecięcych dniach, ::Gdym na matki igrał łonie ::W malowanych snach? 2. Prędkoś, prędkoś żeglowała Po niebieskim tle; O gwiazdeczko moja mała, Źleś ty wiodła mnie! ::Żartkoś biegła śród niebiosów, ::Jam też chyżo żył, ::I z rozkoszy złotych kłosów ::Śpiesznie wieńce wił. 3. Zgasła młodość, zwiędły wieńce, Pożółkł życia maj, I zapały, i rumieńce, Cudny złudzeń kraj. ::Wszystko teraz przy mnie kołem ::Mgła jesienna ćmi, ::Ach, bo blada nad mém czołem ::Ma gwiazdeczka tkwi. 4. Gwiazdko moja, dawne życie W twym promyku wznieć, Nie w zamroczu — na błękicie Jeszcze dla mnie świeć. ::Niech me serce jeszcze zazna ::Doli młodych lat, ::Nim cię ręka pchnie żelazna ::W zasłoneczny świat. — </poem> }} '''Źródło:''' Wiktoryn Zieliński, ''[https://polona.pl/item/drobne-pisma-poetyckie,MjE0MTM5NTQ/53/#info:metadata Drobne pisma poetyckie]''. Warszawa : [s.n.], 1842. S. 44–46. == Przypisy == {{Przypisy}} == Zobacz też == {{Wikiźródła|O gwiazdeczko, coś błyszczała}} * ''[https://bibliotekapiosenki.pl/utwory/O_gwiazdeczko_cos_blyszczala O gwiazdeczko coś błyszczała]'' w serwisie [https://bibliotekapiosenki.pl/cbpp Cyfrowa Biblioteka Polskiej Piosenki] * ''[https://staremelodie.pl/piosenka/6031/O_gwiazdeczko O gwiazdeczko]'' w serwisie [https://staremelodie.pl/ Stare Melodie] qa17rnj0g4b41mi1qe5kjtysdrrjfqj Moduł:Szablonowe/dane 828 60130 545807 544592 2026-06-04T13:13:09Z Persino 2851 545807 Scribunto text/plain local p={}; p.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji={ ["SZABLON"]={ 1,--szablonowe_modul["ParsowanieWywołaniaSzablonu"](); 2,--szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(); 3,--szablonowe_modul["SzablonowaNazwaStrony"](); 4,--szablonowe_modul["NazwaSzablonuWywołania"](); 5,--szablonowe_modul["PełnaNazwaStronyNazwySzablonu"](); 0,--stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(); -1,--techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"] -2,--stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(); -5,--stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(); -6,--stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(); -7,--stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(); -8,--stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy }, ["LINKW"]={ -3,--stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(); }, ["LINKZ"]={ -4,--stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(); }, ["ZNACZNIK"]={ 100,--szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(); }, ["MATH"]={ 101,--szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(); }, ["PRE"]={ 102,--szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(); }, ["ŹRÓDŁO"]={ 103,--szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(); }, ["NOWIKI"]={ 104,--szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(); }, ["GALERIA"]={ 105, }, ["MAPAOBRAZU"]={ 106, }, ["PUDEŁKOWEJŚCIA"]={ 107, }, ["QUIZ"]={ 108, }, }; p.tablica_znaczniki_typowo_mechanizmu_mediawiki={ ["pre"]="PRE", ["nowiki"]="NOWIKI", ["math"]="MATH", ["source"]="ŹRÓDŁO", ["syntaxhighlight"]="ŹRÓDŁO", ["gallery"]="GALERIA", ["imagemap"]="MAPAOBRAZU", ["inputbox"]="PUDEŁKOWEJŚCIA", ["quiz"]="QUIZ", ["score"]="MUZYKA", }; p.tablica_podstawowe_elementy_szablonowe_mediawiki={ ["SZABLON"]=true, ["LINKW"]=true, ["LINKZ"]=true, ["ZMIENNA"]=true, ["WIKITABELA"]=true, ["INNEPRE"]=true, ["ZNACZNIK"]=true, ["INCLUDE"]=true, ["STARE"]=true, }; local m={}; function m.TworzenieTablicyZnacznikowejMechanizmuMediawiki() local tab={}; for _,obiekt in pairs(p.tablica_znaczniki_typowo_mechanizmu_mediawiki)do if(not tab[obiekt])then tab[obiekt]=true;end; end; return tab; end; p.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=m.TworzenieTablicyZnacznikowejMechanizmuMediawiki(); p.tablica_html_mechanizmu_mediawiki={ ["div"]=true, ["span"]=true, ["p"]=true, ["font"]=true, ["code"]=true, ["kbd"]=true, ["sub"]=true, ["sup"]=true, ["bdo"]=true, ["small"]=true, ["big"]=true, ["strong"]=true, ["tt"]=true, ["strike"]=true, ["u"]=true, ["br"]=true, ["hr"]=true, ["dd"]=true, ["dt"]=true, ["b"]=true, ["i"]=true, ["center"]=true, ["table"]=true, ["caption"]=true, ["tbody"]=true, ["tr"]=true, ["td"]=true, ["th"]=true, ["ol"]=true, ["ul"]=true, ["li"]=true, ["em"]=true, ["b"]=true, ["h1"]=true, ["h2"]=true, ["h3"]=true, ["h4"]=true, ["h5"]=true, ["h6"]=true, ["table"]=true, ["tr"]=true, ["td"]=true, ["th"]=true, ["caption"]=true, }; p.tablica_znacznikowa_preprocesora_szablonowego={ ["includeonly"]=true; ["onlyinclude"]=true; ["noinclude"]=true; } local m={}; p.tablica_podobne_html={ ["ref"]=true; ["references"]=true; ["templatestyles"]=true; ["poem"]=true; } m.TablicaZnacznikiMechanizmuMediaWiki=function() local tablica={}; for name,value in pairs(p.tablica_html_mechanizmu_mediawiki)do tablica[name]=value; end; for name,value in pairs(p.tablica_podobne_html)do tablica[name]=value; end; return tablica; end; p.tablica_wiki_znaczniki=m.TablicaZnacznikiMechanizmuMediaWiki(); p.tablica_elementowe_modyfikatory_szablonowe={ ["#invoke:"]={"[%s_]*#[%s_]*invoke[%s_]*:[%s_]*","Module",}, ["#if:"]={"[%s_]*#[%s_]*if[%s_]*:[%s_]*",nil,}, ["#ifeq:"]={"[%s_]*#[%s_]*ifeq[%s_]*:[%s_]*",nil,}, ["#iferror:"]={"[%s_]*#[%s_]*iferror[%s_]*:[%s_]*",nil,}, ["#ifexpr:"]={"[%s_]*#[%s_]*ifexpr[%s_]*:[%s_]*",nil,}, ["#ifexist:"]={"[%s_]*#[%s_]*ifexist[%s_]*:[%s_]*",nil,}, ["#expr:"]={"[%s_]*#[%s_]*expr[%s_]*:[%s_]*",nil,}, ["#tag:"]={"[%s_]*#[%s_]*tag[%s_]*:[%s_]*",nil,}, ["#switch:"]={"[%s_]*#[%s_]*switch[%s_]*:[%s_]*",nil,}, ["#property:"]={"[%s_]*#[%s_]*property[%s_]*:[%s_]*",nil,}, ["int:"]={"[%s_]*int[%s_]*:[%s_]*","MediaWiki",}, ["msg:"]={"[%s_]*msg[%s_]*:[%s_]*","Template",}, ["msgnw:"]={"[%s_]*msgnw[%s_]*:[%s_]*","Template"}, ["raw:"]={"[%s_]*raw[%s_]*:[%s_]*","Template",}, ["subst:"]={"[%s_]*subst[%s_]*:[%s_]*",nil,}, ["safesubst:"]={"[%s_]*safesubst[%s_]*:[%s_]*",nil,}, ["gender:"]={"[%s_]*gender[%s_]*:[%s_]*",nil,}, ["ucfirst:"]={"[%s_]*ucfirst[%s_]*:[%s_]*",nil,}, ["lcfirst:"]={"[%s_]*lcfirst[%s_]*:[%s_]*",nil,}, ["uc:"]={"[%s_]*uc[%s_]*:[%s_]*",nil,}, ["lc:"]={"[%s_]*lc[%s_]*:[%s_]*",nil,}, ["DEFAULTSORT:"]={"[%s_]*DEFAULTSORT[%s_]*:[%s_]*",nil,}, }; p.opis_elementowe_modyfikatory="^[%s_]*#?[%s_]*%a+[%s_]*:[%s_]*"; return p; ay7jj8478smomg74220k93bzmn3s0pq Śpiewnik/Oj ty horo kamennaja 0 60666 545894 541540 2026-06-05T07:56:25Z Persino 2851 /* Tekst */ 545894 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Opis == [[Plik:Teodor Axentowicz - Kołomyjka.jpg|thumb|400px|Kołomyjka. Teodor Axentowicz (1859–1938)]] O kołomyjkach, tradycyjnych przyśpiewkach rusińskich (podolskich i ukraińskich) tak we wstępie do ''Pieśni polskich i ruskich ludu galicyjskiego'' pisał Wacław Zaleski: : „Kołomyjki te same mają znamiona, jak krakowiaki: krótkość, dwa, cztery, rzadko kiedy więcej wierszy; pośpiech w układzie – w pierwszym wierszu zwykle jaki obraz z otaczającej natury, w drugim wierszu uczucie, pomysł, który się właśnie wyrazić chciało. Ale dumający Rusin głębiej, trafniej bierze swoje obrazy, jak Polak. Rzadko się wydarza, żeby pierwszy wiersz z drugim nie był w ścisłym związku, w związku nieraz uderzającym niedościgniętą głębokością pomysłu i uczucia. Skromność wszędzie prawie zachowana; wesołość rzadka, owszem posępność jakaś, cecha samotności się przebija. (...) Charakterystyczna jeszcze różnica między krakowiakiem i kołomyjką jest ta, że krakowiak śpiewa się zawsze na nutę wesołą, i że takich nut jest bardzo wiele, zupełnie się od siebie różniących, gdy tymczasem kołomyjka zawsze na jednę nutę się śpiewa. Jest jednak rzeczą nie do pojęcia a przecież prawdziwą, że ta jedna nuta przez samę tylko modyfikacyą tonu daje się bardzo dobrze zastosować do wydania i najsmutniejszego uczucia i najrozpustniejszej wesołości.”<ref>Wacław Zaleski, ''[https://polona.pl/item-view/842c6e89-1302-458f-b448-3613cf98225f?page=45 Pieśni polskie i ruskie ludu galicyjskiego. Z 1. Słowa]'', Karol Lipiński (muz.), Lwów: F. Piller, 1833. S. XL–XLII.</ref> Według Zaleskiego poniższa melodia stanowi pierwotną i podstawową melodię kołomyjki. == Muzyka == '''Muzyka:''' autor nieznany (melodia ludowa)<br /> '''Aranżacja:''' Karol Lipiński (1790-1861) <score raw="1" vorbis="1"> \version "2.20.0" \header{ title = "Oj ty horo kamennaja (kołomyjka)" poet = "Słowa: autor nieznany (pieśń ludowa)" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Karol Lipiński (1790-1861)" meter = "Opracowanie: Wacław Zaleski (1799-1849)" tagline = "" } global = { \key g \minor \time 2/4 \tempo 4=120 } melodia = << \new Staff \with {midiInstrument = "flute"} { \clef treble \global \relative d''{ \autoBeamOff d8 g g16([ fis)] g8 | g g g16([ fis)] g8 | bes bes16([ a)] g8 g | f[( e16 d)] d4 | \repeat volta 2 { f8 f e f | d8 d d16[( a]) d8 | f8 f e f | d8.[ a16] d4 | } } } \addlyrics { \small { Oj ty ho -- ro ka -- men -- na -- ja czom sia ne łu -- pa -- jesz? Oj ska -- ży my diw -- cze praw -- du, w_kim ty sia ko -- cha -- jesz? Chy -- ba -- by ja z_pis -- ku bu -- ła, szo -- bym sia łu -- pa -- ła; Chy -- ba by ja dur -- na bu -- ła, szo -- bym sia pry -- zna -- ła. } } \new PianoStaff << \new Staff = "RH" \relative c'' { \clef treble \global \relative d'' { d8 g g16([ fis)] g8 | g g g16([ fis)] g8 | bes bes16([ a)] g8 g | f[( e16 d) d4] | \repeat volta 2 { f8 <f a,> <e a,>([ <f a,>)] | <d a>[ <d a>] d16([ a d8)] | <f a,> <f a,> <e a,>([ <f a,>)] | d8.[ a16] d4 | } } } \new Staff = "LH" { \clef bass \global <d, g, bes,>8 d <d, g, bes,>8 d | <d, g, bes,>8 d <d, g, bes,>8 d | <d, g, bes,>8 d <d, g, bes,>8 d | <d, f, a,>8 d <d, f, a,>8 d | \repeat volta 2 { <d, a,>4 d | <d, a,>8 d <d, a,>8 d | <d, a,>8 d <d, a,>8 d | <d, a,>8 d <d, a,>8 d | } } >> >> \score { \melodia \layout{} } \score{ \unfoldRepeats \melodia \midi{} } </score> '''Źródło:''' Wacław Zaleski, ''[https://polona.pl/item-view/cd2e28de-3521-42b1-98a2-22b2158adbb9?page=78 Pieśni polskie i ruskie ludu galicyjskiego. Z. 2, Nuty]'', Karol Lipiński (muz.), Lwów: F. Piller, 1833. S. 71. == Tekst == '''Autor''' nieznany (piosneka ludowa)<br /> '''Opracowanie:''' Wacław Zaleski (1799-1849) <poem> Oj ty horo kamennaja, czom sia ne łupajesz? Oj skaży my diwcze prawdu, w kim ty sia kochajesz? Chybaby ja z pisku buła, szobym sia łupała; Chybaby ja durna buła, szobym sia pryznała. </poem> '''Źródło:''' Wacław Zaleski, ''[https://polona.pl/item-view/842c6e89-1302-458f-b448-3613cf98225f?page=242 Pieśni polskie i ruskie ludu galicyjskiego. Z 1. Słowa]'', Karol Lipiński (muz.), Lwów: F. Piller, 1833. S. 181–182. == Przypisy == {{Przypisy}} glav0mdw8z919wlro7w6k95pgie9mmi Kategoria:Schab 14 61211 545870 507126 2026-06-05T05:34:26Z Persino 2851 545870 wikitext text/x-wiki {{Kategoria|Wieprzowina}} 50wv3skzs3asmfmnpvtun4klvq2cgek Kategoria:Polędwica wieprzowa 14 61212 545869 507151 2026-06-05T05:33:59Z Persino 2851 545869 wikitext text/x-wiki {{Kategoria|Wieprzowina}} 50wv3skzs3asmfmnpvtun4klvq2cgek Kategoria:Boczek 14 61227 545868 507305 2026-06-05T05:33:40Z Persino 2851 545868 wikitext text/x-wiki {{Kategoria|Wieprzowina}} 50wv3skzs3asmfmnpvtun4klvq2cgek Kategoria:Chorizo 14 61248 545872 507374 2026-06-05T05:36:33Z Persino 2851 545872 wikitext text/x-wiki {{Kategoria|Wędliny}} 4ixyes8qw0mnan9s236yc5y8aebla0v Kategoria:Mascarpone 14 61692 545863 525254 2026-06-05T05:26:10Z Persino 2851 545863 wikitext text/x-wiki {{Kategoria|Desery}} m9hld9xmjq0tup2uzgpc3puqalp27c7 Śpiewnik/Za Niemen het precz 0 63363 545907 538908 2026-06-05T08:29:25Z Persino 2851 /* Przypisy */ 545907 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Muzyka == '''Autor:''' nieznany<br> (na podstawie ukraińskiej pieśni Stefana Pisarewskiego z 1813 r.)<ref>{{Cytuj stronę|tytuł=Za Niemen|url=https://bibliotekapiosenki.pl/utwory/Za_Niemen|opublikowany=Cyfrowa Biblioteka Polskiej Piosenki|data dostępu=2026-04-02}}</ref> <score raw="1" vorbis="1"> \version "2.19.82" \header{ title = "Za Niemen het precz" poet = "Słowa: Augustyn Bielawski" %meter = "Opracowanie:" composer = "Muzyka: autor nieznany" arranger = "Aranżacja: Franciszek Barański" tagline = "" } global = { \key d \minor \time 4/4 \tempo 4=120 } \score{ << \new Voice = "mel" { \set Staff.midiInstrument = #"fiddle" \autoBeamOff \relative c' { \clef treble \global \autoBeamOff d4( d16) e f g a4. r8 | \tuplet 3/2 { d,8 bes' a } \tuplet 3/2 { g8 a g } | \tuplet 3/2 { f8 g f } \tuplet 3/2 { e8 f e } | d4 bes' a4. cis,8 | d2 r4 r8 c8 | a'2 a4. bes8 | c2 c4. c8 | d2 c4. b8 | c2 a4 r8 a8 | c2 bes4. a8 | bes2 g2 | c,4 c a'4. g8 | g2 f4 r8 c8 | a'2 a4. bes8 | c2 c4. c8 | d2 c4. b8 | c2( a4) r8 a8 | c2 bes4. a8 | bes2 g2 | c,4 c a'4. g8 | f2( f4) r4 | } } \addlyrics { \small { Za Nie -- men tam precz, już go -- tów koń, zbro -- ja, Dziew -- czy -- no ty mo -- ja U -- ści -- śnij, daj miecz. Za Nie -- men, za Nie -- men, i po cóż za Nie -- men, nie przy -- lgniesz tam ser -- cem, cóż wa -- bi za Nie -- men? Czy kraj tam pię -- kniej -- szy, kwie -- ci -- stsza tam błoń? Czy mil -- sze dzie -- wo -- je, że tak spie -- szysz doń? } } \new PianoStaff << \new Staff = "RH" \relative c' { \clef treble \global d4( d16)[ e f g] a4. r8 | \tuplet 3/2 { d8[ bes a] } \tuplet 3/2 { g8[ a g] } | \tuplet 3/2 { f8[ g f] } \tuplet 3/2 { e8[ f e] } | d4 bes' a4. cis,8 | <d a e>2 r4 r8 c8 | <f a>2 <f a>4. <g bes>8 | <a c>2 <a c>4. <a c>8 | <bes d>2 <a c>4. <gis b>8 | <a c>2 <f a>4 r8 <f a>8 | <e c'>2 <e bes'>4. <e a>8 | <e bes'>2 <e g> | c4 c a'4. g8 | g2 f4 r8 c8 | <f a>2 <f a>4. <g bes>8 | <a c>2 <a c>4. <a c>8 | <bes d>2 <a c>4. <gis b>8 | <a c>2 <f a>4 r8 <f a>8 | <e c'>2 <e bes'>4. <e a>8 | <e bes'>2 <e g> | c4 c a'4. g8 | f2 f4 r4 | } \new Staff = "LH" { \clef bass \global d4( d16)[ e f g] a4. r8 | \tuplet 3/2 { d8[ bes a] } \tuplet 3/2 { g8[ a g] } | \tuplet 3/2 { f8[ g f] } \tuplet 3/2 { e8[ f e] } | d4 bes a4. cis8 | <d d,>2 r4 r4 | f,4 c' <a f>4 c' | f,4 c' <a f>4 c' | f,4 d' <a f>4 c' | f,4 c' <a f>4 c' | c,4 c' <bes e>4 c' | c,4 c' <bes e>4 c' | c,4 bes <g e>4 bes | f,4 c' <a f>4 c' | f,4 c' <a f>4 c' | f,4 c' <a f>4 c' | f,4 d' <a f>4 c' | f,4 c' <a f>4 c' | c,4 c' <bes e>4 c' | c,4 c' <bes e>4 c' | c,4 bes <g e>4 bes | f,4 c' <a f>4 r4 | } >> >> \midi{} \layout{} } </score> <br> '''Źródło:''' Franciszek Barański, ''[https://polona.pl/item-view/5d2b8ad2-2213-4159-b01e-04042659827a?page=55 Jeszcze Polska nie zginęła! : pieśni patryotyczne i narodowe. Cz. 1, Muzyka]''. Lwów [1894] s. 64.<br> == Tekst == '''Autor:''' Augustyn Bielawski (1806–1876)<br> {{Kolumny|2| <poem> 1. Za Niemen tam precz! Już gotów koń, zbroja Dziewczyno ty moja, Uściśnij, daj miecz. ::Za Niemen, za Niemen i po cóż za Niemen? ::Nie przylgniesz tam sercem, cóż wabi za Niemen? ::Czy kraj tam piękniejszy, kwiecistsza tam błoń ::Czy milsze dziewoje, że spieszysz tam doń? 2. Nie spieszę do dziew, Ja spieszę na gody, Czerwone pić miody, Moskiewską lać krew. ::Chcesz godów, zaczekaj kochanie ty moje, ::Ja gody wyprawię, nasycę, napoję. ::Patrz, pierś ma otwarta, więc serce me weź, ::Krwi mojej sie napij, napij się mych łez. 3. Dziewczyno stój, stój, Twe słowa, jak z brzytwy, Ja z pola, ja z bitwy Powrócę, jam twój! ::Nie wrócisz, mój luby, nie wrócisz ty do mnie, ::Twe serce odwyknie i pamięć zapomni. ::Patrz, koń już opuszcza pastwisko i żłób, ::A w polu czerwonem niechybny twój grób. 4. Jak wielki jest Bóg Ja w oręż mój wierzę, Gdzie tylko nim zmierzę, Tam padnie zły wróg! ::Jeśli już twa wola, idź walczyć na wroga, ::Ach, biednaż ja, biedna, jakaż we mnie trwoga. ::Niechże cię Bóg mocny przed wrogiem ukrywa, ::Ach, smutna ma dola! Ach, ja nieszczęśliwa! </poem> }} <br> '''Źródło:''' Franciszek Barański, ''[https://polona.pl/item-view/9df32064-1fac-4fe8-93c6-a2186dd3d37a?page=296 Jeszcze Polska nie zginęła! : pieśni patryotyczne i narodowe. Cz. 1-2]''. Lwów [post 1910], s. 109. == Zobacz też == {{Wikiźródła|Rozłączenie (Bielowski)}} * [https://bibliotekapiosenki.pl/utwory/Za_Niemen Za Niemen] w serwisie [https://bibliotekapiosenki.pl/ Cyfrowa Biblioteka Polskiej Piosenki] * [https://staremelodie.pl/piosenka/4164/Za_Niemen_het_precz Za Niemen het precz] w serwisie [https://staremelodie.pl/ Stare Melodie] == Przypisy == {{Przypisy}} 8r6ah7l4p8x4donjjxa4hidrtcbjj07 Śpiewnik/Ojcze z niebios Boże Panie 0 63411 545895 538992 2026-06-05T07:57:12Z Persino 2851 /* Przypisy */ 545895 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Opis == Pieśń pochodzi z opery ''Halka''<ref>Feliks Nowowiejski, ''[https://crispa.uw.edu.pl/object/files/142171/display/Default Nowy śpiewnik polski : na chór mieszany (60 pieśni)]''. Poznań 1924, s. 100.</ref>, gdzie wykonywana jest przez chór górali podczas sceny zaślubin Janusza i Zofii<ref>Pieśń ''[https://bibliotekapiosenki.pl/utwory/Ojcze_z_niebios Ojcze z niebios]'' w serwisie ''[https://bibliotekapiosenki.pl Cyfrowa Biblioteka Polskiej Piosenki]''.</ref>. Z niewielkimi zmianami tesktu notowana jest także przez śpiewniki kościelne, np. internetowy śpiewnik ks.&nbsp;Siedleckiego<ref>{{Cytuj stronę|tytuł="Pieśni przygodne – Śpiewnik ks. Siedleckiego" | url = https://spiewniksiedleckiego.pl/?page_id=2054 | data dostępu = 2026-04-05}}</ref>. == Muzyka == <score raw="1" vorbis="1"> \version "2.20.0" \header{ title = "Ojcze z niebios, Boże Panie" poet = "Słowa: Włodzimierz Wolski" %meter = "Opracowanie:" composer = "Muzyka: Stanisław Moniuszko" %arranger = "Aranżacja: " tagline = "" } global = { \key g \major \time 4/4 \tempo 4=110 } \score{ << \new Voice = "mel" { \set Staff.midiInstrument = "choir aahs" \autoBeamOff \relative c'' { \clef treble \global \autoBeamOff \stemUp <b d>4. <a c>8 <g b>4 <fis a> | <e g>4 <fis a> <g b>^\> g8\! r8 | <b d>4. <a c>8 <g b>4 <a c> | <b d>2^\< <c e>\!^\> | %( \aftergrace{ <b d>8 } )\! | <b d>2.\! \fermata ( <g b>4) | <fis a>4.^\markup {\italic cresc. } <g b>8 <a c>4^\markup {–} <a fis> | <g b>4^\markup {–} \stemDown <c e> <b d> ^\markup {–} \stemUp <g b>8 r8 | <fis a>4. <g b>8 <a c>4 <c e> | <b d>2 << a2( {s4 c4)} >> | <g b>1 \fermata \bar "|." } } \addlyrics { \small { Oj -- cze z niebios, Bo -- że Pa -- nie! Tu na zie -- mię ze -- ślij nam Two -- je świę -- te zmi -- ło -- wa -- nie Tu na zie -- mię ze -- ślij nam. } } << \new Staff = "RH" \relative g' { \clef treble \global \new Voice = "alt" { \set Staff.midiInstrument = "choir aahs" g4. d8 d4 d | b4 d g\> g8\! r8 | g4. g8 g4 g | g2\< g\!\> | g2.\! \fermata r4 | d4. d8 d4 d | d4 c8[( e]) g4 g8 r8 | d4. d8 d4 g | d2 fis | g1 \fermata \bar "\." } } \new Staff = "LH" { \clef bass \global << \new Voice = "tenor" { \set Staff.midiInstrument = "choir aahs" \stemUp d'4. c'8 b4 a | g4 a b g8 r8 | d'4. c'8 b4 c' | <b d'>2 <c' e'>2 | %( \aftergrace{ <b d'>8 }) | <b d'>2._\fermata r4 | a4. b8 c'4 a | b4 e' d' b8 r8 | a4. b8 c'4 e | d2. d4 | d1 \fermata \bar "|." } \new Voice = "bas" { \set Staff.midiInstrument = "choir aahs" \stemDown b4. a8 g4 d | b,4 d g\> g8\! s8 | g4. g8 g4 g | g2\< c\!\> | g2.\!_\fermata r4 | d4. d8 d4 d | g4 c a fis8 s8 | fis4. g8 a4 <g c>4 | d2 d | g,1 \bar "|." } >> } >> >> \midi{} \layout{} } </score> <br> '''Źródło:''' Feliks Nowowiejski, ''[https://crispa.uw.edu.pl/object/files/142171/display/Default Nowy śpiewnik polski : na chór mieszany (60 pieśni)]'' (fragment). Poznań 1924, s. 101–102. == Słowa == '''Autor:''' Włodzimierz Wolski <br> {{Kolumny|3| <poem> 1. Ojcze z niebios, Boże Panie! Tu na ziemię ześlij nam Twoje święte zmiłowanie Tu na ziemię zaślij nam. 2. Boże mocny, święty Boże! Nad Twym ludem zlituj się! Wszakże dłoń Twa wszystko może; Ach! Nad nami zlituj się! 3. A przez Syna Twego męki Ulżyj smutnej biedzie tej, Łzom pofolguj, ukój jęki. Boże wielki, litość miej! </poem> }} <br> '''Źródło:''' Feliks Nowowiejski, ''[https://crispa.uw.edu.pl/object/files/142171/display/Default Nowy śpiewnik polski : na chór mieszany (60 pieśni)]''. Poznań 1924, s. 100–106. == Przypisy == {{Przypisy}} s8vjzv2bs5h80kehtrdxb4ifob4c80o Zioła i przyprawy/Kolendra 0 63447 545847 543911 2026-06-04T20:05:33Z EdytaT 2664 545847 wikitext text/x-wiki {{Podrozdział|[[Zioła i przyprawy]]|Kolendra}} [[Plik:A scene of Coriander leaves.JPG|thumb|Listki]] [[Plik:Flor de Cilantro Mexicano.jpg|thumb|Kwiaty z ziarnami]] [[Plik:Koriander (Coriandrum sativum) Paste im Glas--Josef Schlaghecken.jpg|thumb|Pasta z kolendry]] [[Plik:Coriander seeds.jpg|thumb|Ziarna]] {{wikipedia|Kolendra}} {{wikisłownik|kolendra}} {{Wikibooks|Napary/Kolendra siewna|herbatek z kolendry}} {{Wikibooks|Ekoogrodnictwo/Rośliny użytkowe/Kolendra siewna|uprawy kolendry}} == Kolendra == Prawdziwa kolendra jest stosowana głównie w potrawach azjatyckich lub latynoamerykańskich, np. w zupach, gulaszach czy sałatkach – niezależnie od tego, czy są to dania wegetariańskie, z rybą czy mięsem. Pod względem smaku listki i nasiona bardzo się od siebie różnią. == Listki kolendry == * Zarówno świeże jak i suszone listki kolendry dla jednych smakują świeżością krystalicznej wody z górskiego strumienia, a dla innych mają smak mydła. * Mają delikatny, lekko słodkawy aromat. * Jeśli przypadkowo dodałeś jej za dużo do gotowania, możesz zneutralizować jej smak gotując potrawę nieco dłużej. * Świeżą kolendrę najlepiej dodać do potrawy dopiero pod koniec gotowania. * Przybliżonym zamiennikiem listków kolendry może być mieszanka [[Zioła i przyprawy/Pietruszka|pietruszki]], [[Zioła i przyprawy/Koper|kopru]] i [[Zioła i przyprawy/Estragon|estragonu]]. === Potrawy === * zupy * gulasze * sałatki == Nasiona (owoce) kolendry == * Nasiona kolendry mają cytrusowy smak z cierpką świeżością. * Dobrze znoszą wysoką temperaturę i nabierają intensywniejszego smaku, jeśli wcześniej zostaną podprażone na oleju. * Są łatwe w obróbce. Można je spożywać suszone, dodając je w całości do potraw lub wcześniej mieląc lub rozgniatając w moździerzu. * Stosuje się je również postaci proszku do dań na ciepło i na zimno. * Przybliżonym zamiennikiem nasion kolendry mogą być nasiona [[Zioła i przyprawy/Koper włoski|kopru włoskiego]] lub [[Zioła i przyprawy/Kumin|kuminu]]. === Potrawy === * zupy * gulasze * wypieki świąteczne * przyprawa do pieczywa * Kolendra jest jednym z podstawowych składników mieszanki [[Zioła i przyprawy/Curry|curry]] == Kompozycje smakowe == * Klasycznie: Kolendra dobrze komponuje się z typowymi azjatyckimi smakami, takimi jak [[Zioła i przyprawy/Trawa cytrynowa|trawa cytrynowa]]. * Łagodnie i pikantnie (po indyjsku/orientalnie): jogurt naturalny lub grecki, zmieszany z [[Zioła i przyprawy/Czosnek|czosnkiem]], [[Zioła i przyprawy/Miód|miodem]], [[Zioła i przyprawy/Kumin|kuminem]] i [[Zioła i przyprawy/Curry|curry]]. == Przypisy == {{Przypisy}} {{BrClear}} <noinclude>{{Wolumin}}</noinclude> hqry1hu4u316n2nmldhkoeabswxrvhz 545848 545847 2026-06-04T20:15:44Z EdytaT 2664 /* Nasiona (owoce) kolendry */ 545848 wikitext text/x-wiki {{Podrozdział|[[Zioła i przyprawy]]|Kolendra}} [[Plik:A scene of Coriander leaves.JPG|thumb|Listki]] [[Plik:Flor de Cilantro Mexicano.jpg|thumb|Kwiaty z ziarnami]] [[Plik:Koriander (Coriandrum sativum) Paste im Glas--Josef Schlaghecken.jpg|thumb|Pasta z kolendry]] [[Plik:Coriander seeds.jpg|thumb|Ziarna]] {{wikipedia|Kolendra}} {{wikisłownik|kolendra}} {{Wikibooks|Napary/Kolendra siewna|herbatek z kolendry}} {{Wikibooks|Ekoogrodnictwo/Rośliny użytkowe/Kolendra siewna|uprawy kolendry}} == Kolendra == Prawdziwa kolendra jest stosowana głównie w potrawach azjatyckich lub latynoamerykańskich, np. w zupach, gulaszach czy sałatkach – niezależnie od tego, czy są to dania wegetariańskie, z rybą czy mięsem. Pod względem smaku listki i nasiona bardzo się od siebie różnią. == Listki kolendry == * Zarówno świeże jak i suszone listki kolendry dla jednych smakują świeżością krystalicznej wody z górskiego strumienia, a dla innych mają smak mydła. * Mają delikatny, lekko słodkawy aromat. * Jeśli przypadkowo dodałeś jej za dużo do gotowania, możesz zneutralizować jej smak gotując potrawę nieco dłużej. * Świeżą kolendrę najlepiej dodać do potrawy dopiero pod koniec gotowania. * Przybliżonym zamiennikiem listków kolendry może być mieszanka [[Zioła i przyprawy/Pietruszka|pietruszki]], [[Zioła i przyprawy/Koper|kopru]] i [[Zioła i przyprawy/Estragon|estragonu]]. === Potrawy === * zupy * gulasze * sałatki == Nasiona (owoce) kolendry == * Mają delikatnie cytrusowy aromat z cierpką świeżością. * Suszone nasiona należy przechowywać w szczelnych szklanych pojemnikach w suchym miejscu. * Dobrze znoszą wysoką temperaturę i nabierają intensywniejszego smaku, jeśli wcześniej zostaną podprażone na oleju. * Są łatwe w obróbce. Można je spożywać suszone, dodając je w całości do potraw lub wcześniej mieląc lub rozgniatając w moździerzu. * Stosuje się je do dań na ciepło i na zimno. * Przybliżonym zamiennikiem nasion kolendry mogą być nasiona [[Zioła i przyprawy/Koper włoski|kopru włoskiego]] lub [[Zioła i przyprawy/Kumin|kuminu]]. === Potrawy === * Zupy * Gulasze * Wypieki świąteczne * Przyprawa do pieczywa * Kolendra jest jednym z podstawowych składników mieszanki [[Zioła i przyprawy/Curry|curry]] == Kompozycje smakowe == * Klasycznie: Kolendra dobrze komponuje się z typowymi azjatyckimi smakami, takimi jak [[Zioła i przyprawy/Trawa cytrynowa|trawa cytrynowa]]. * Łagodnie i pikantnie (po indyjsku/orientalnie): jogurt naturalny lub grecki, zmieszany z [[Zioła i przyprawy/Czosnek|czosnkiem]], [[Zioła i przyprawy/Miód|miodem]], [[Zioła i przyprawy/Kumin|kuminem]] i [[Zioła i przyprawy/Curry|curry]]. == Przypisy == {{Przypisy}} {{BrClear}} <noinclude>{{Wolumin}}</noinclude> 0ov7r7d9houu93lai813idtgdc3ymwb Ekoogrodnictwo/Rośliny użytkowe/Kolendra siewna 0 63452 545844 540031 2026-06-04T19:42:26Z EdytaT 2664 545844 wikitext text/x-wiki {{Podrozdział|[[Ekoogrodnictwo]]<br>[[Ekoogrodnictwo/Rośliny_użytkowe|Rośliny użytkowe]]<br>Kolendra siewna}} {{Uprawa - roślina infobox |nazwa = Kolendra siewna |obrazek = Starr 080731-9547 Coriandrum sativum retusche.jpg |gleba = |ciepło = |wrażliwość = |woda = |łacina = Coriandrum sativum L. |wikipedia = Kolendra siewna |wikispecies = Coriandrum sativum |wikisłownik = kolendra siewna |commons = Coriandrum sativum }} {{Wikibooks|Napary/Kolendra|kolendry}} {{Wikibooks|Zioła i przyprawy/Kolendra|kolendry}} === Uprawa === ===== Miejsce uprawy ===== * Podczas sadzenia należy zadbać o wystarczającą ilość miejsca, ponieważ krzew kolendry może osiągnąć wysokość do 90 cm. ===== Siew/sadzenie ===== * Od kwietnia do czerwca można włożyć w ziemię cztery do pięciu nasion na głębokość około pół centymetra w odstepach ok. 25 cm.. * Nasiona należy przykryć cienką warstwą (około 1 cm) gleby. Zbyt płytkie posadzenie może spowodować ich wyschnięcie. * Po wykiełkowaniu sadzonki należy rozdzielić, zachowując odstępy 15 cm. * Małe rośliny należy regularnie podlewać i utrzymywać w wilgoci. * Kwitnie od lipca do sierpnia. ===== Uprawa pod szkłem ===== * Kolendrę można z powodzeniem uprawiać w szklarni, w tunelu foliowym, a także w doniczkach na parapecie lub balkonie. === Wskazówki biologiczne === * Kolendra jest [[Pszczelarstwo/Rośliny/Coriandrum sativum|rośliną miododajną]]. * Dobrzy sąsiedzi: :* [[Ekoogrodnictwo/Rośliny użytkowe/Sałata|Sałata]], [[Ekoogrodnictwo/Rośliny użytkowe/Kapusta głowiasta|kapusta głowiasta]], [[Ekoogrodnictwo/Rośliny użytkowe/Chili|chili]] i [[Ekoogrodnictwo/Rośliny użytkowe/Imbir|imbir]]. * Źli sąsiedzi: === Zbiór === * Po upływie ok. czterech do sześciu tygodni młoda roślina jest gotowa do pierwszego zbioru. Zrywaj tylko dolne liście i ścinaj łodygi, aby roślina mogła wypuścić nowe pędy. * Jeśli nie chcesz zbierać nasion, możesz przedłużyć okres zbioru liści i łodyg. Wystarczy w odpowiednim czasie usunąć pąki kwiatowe. * Świeże liście możesz zebrać i zamrozić. * Od sierpnia do września nasiona kolendry powoli dojrzewają. Ponieważ w pełni dojrzałe ziarna szybko opadają, zbierz nasiona przed osiągnięciem przez nie pełnej dojrzałości. === Odmiany === === Zastosowanie === * Kolendra siewna to zioło i przyprawa kuchenna. * → [[Zioła i przyprawy/Kolendra|Zioła i przyprawy - Kolendra]] 3894048k1mmr6jc0ybo67g2d5u3j4sm 545846 545844 2026-06-04T20:03:22Z EdytaT 2664 545846 wikitext text/x-wiki {{Podrozdział|[[Ekoogrodnictwo]]<br>[[Ekoogrodnictwo/Rośliny_użytkowe|Rośliny użytkowe]]<br>Kolendra siewna}} {{Uprawa - roślina infobox |nazwa = Kolendra siewna |obrazek = Starr 080731-9547 Coriandrum sativum retusche.jpg |gleba = |ciepło = |wrażliwość = |woda = |łacina = Coriandrum sativum L. |wikipedia = Kolendra siewna |wikispecies = Coriandrum sativum |wikisłownik = kolendra siewna |commons = Coriandrum sativum }} {{Wikibooks|Napary/Kolendra siewna|kolendry siewnej}} {{Wikibooks|Zioła i przyprawy/Kolendra|kolendry}} === Uprawa === ===== Miejsce uprawy ===== * Podczas sadzenia należy zadbać o wystarczającą ilość miejsca, ponieważ krzew kolendry może osiągnąć wysokość do 90 cm. ===== Siew/sadzenie ===== * Od kwietnia do czerwca można włożyć w ziemię cztery do pięciu nasion na głębokość około pół centymetra w odstepach ok. 25 cm.. * Nasiona należy przykryć cienką warstwą (około 1 cm) gleby. Zbyt płytkie posadzenie może spowodować ich wyschnięcie. * Po wykiełkowaniu sadzonki należy rozdzielić, zachowując odstępy 15 cm. * Małe rośliny należy regularnie podlewać i utrzymywać w wilgoci. * Kwitnie od lipca do sierpnia. ===== Uprawa pod szkłem ===== * Kolendrę można z powodzeniem uprawiać w szklarni, w tunelu foliowym, a także w doniczkach na parapecie lub balkonie. === Wskazówki biologiczne === * Kolendra jest [[Pszczelarstwo/Rośliny/Coriandrum sativum|rośliną miododajną]]. * Dobrzy sąsiedzi: :* [[Ekoogrodnictwo/Rośliny użytkowe/Sałata|Sałata]], [[Ekoogrodnictwo/Rośliny użytkowe/Kapusta głowiasta|kapusta głowiasta]], [[Ekoogrodnictwo/Rośliny użytkowe/Chili|chili]] i [[Ekoogrodnictwo/Rośliny użytkowe/Imbir|imbir]]. * Źli sąsiedzi: === Zbiór === * Po upływie ok. czterech do sześciu tygodni młoda roślina jest gotowa do pierwszego zbioru. Zrywaj tylko dolne liście i ścinaj łodygi, aby roślina mogła wypuścić nowe pędy. * Jeśli nie chcesz zbierać nasion, możesz przedłużyć okres zbioru liści i łodyg. Wystarczy w odpowiednim czasie usunąć pąki kwiatowe. * Świeże liście możesz zebrać i zamrozić. * Od sierpnia do września nasiona kolendry powoli dojrzewają. Ponieważ w pełni dojrzałe ziarna szybko opadają, zbierz nasiona przed osiągnięciem przez nie pełnej dojrzałości. === Odmiany === === Zastosowanie === * Kolendra siewna to zioło i przyprawa kuchenna. * → [[Zioła i przyprawy/Kolendra|Zioła i przyprawy - Kolendra]] mmt3fhri92q06i43mucdadvmlp0teyd Zioła i przyprawy/Curry 0 63488 545845 543915 2026-06-04T19:45:23Z EdytaT 2664 /* Curry */ 545845 wikitext text/x-wiki {{Podrozdział|[[Zioła i przyprawy]]|Curry}} [[Plik:Curry Powder.JPG|thumb|Składniki curry]] [[Plik:Curry powder in the spice-bazaar in Istanbul.jpg|thumb|Curry]] {{wikipedia|Curry}} {{wikisłownik|curry}} == Curry == * Przyprawy curry nie należy mylić z indyjską potrawą o nazwie curry. * Mieszanka curry zawiera azjatyckie aromaty, ale powstała w Wielkiej Brytanii. * Nie ma jednej recepty na curry jako przyprawy do potraw. W zależności od regionu, a także od samej potrawy używa się różnych mieszanek. * Dla doskonałego smaku curry ważnym jest, by składniki były świeżo mielone, ale gotowa przyprawa również może być użyta. * W skład curry wchodzi nawet do 36 różnych roślin. * Stałymi składnikami są z reguły: :* [[Zioła i przyprawy/Kurkuma|kurkuma]] (nadaje żółtego koloru), [[Zioła i przyprawy/Imbir|imbir]] (ostrość i świeżość), [[Zioła i przyprawy/Chili|chili]], [[Zioła i przyprawy/Kolendra|kolendra]] (delikatny, lekko słodkawy aromat), [[Zioła i przyprawy/Kumin|kumin]] (cierpka, nieco ziemista nuta), [[Zioła i przyprawy/Pieprz|pieprz]], [[Zioła i przyprawy/Kozieradka|kozieradka]] (pikantny, lekko gorzki smak). * Ponadto często dodawane są: :* [[Zioła i przyprawy/Cynamon|cynamon]], [[Zioła i przyprawy/Goździki|goździki]], [[Zioła i przyprawy/Fenkuł|ziarna fenkułu]], [[Zioła i przyprawy/Kardamon|kardamon]], [[Zioła i przyprawy/Czosnek|czosnek]], [[Zioła i przyprawy/Galka muszkatołowa|gałka muszkatołowa]]. == Potrawy == * [[Zioła i przyprawy/Marynaty|Marynaty]] do potraw pieczonych i grillowanych. :* [[Zioła i przyprawy/Marynaty#Marynata jogurtowa z curry|Marynata z jogurtowa z curry]] do drobiu na grill == Kompozycje smakowe == * Na owocowo-kremowo: curry szczególnie dobrze komponuje się z owocowymi, kwaśnymi lub kremowymi składnikami, takimi jak jogurt, [[Zioła i przyprawy/Mleko kokosowe|mleko kokosowe]], [[Zioła i przyprawy/Limonka|limonka]] czy mango. Ta mieszanka przypraw doskonale pasuje do drobiu (kurczaka, indyka), jasnych ryb i warzyw. Świetnie nadaje się również do wzbogacenia smaku wieprzowiny lub krewetek. * Egzotycznie: baza z [[Zioła i przyprawy/Mleko kokosowe|mleka kokosowego]], czerwonej lub zielonej pasty curry, doprawiona [[Zioła i przyprawy/Sos sojowy|sosem sojowym]], odrobiną soku z [[Zioła i przyprawy/Limonka|limonki]] i [[Zioła i przyprawy/Imbir|imbirem]]. * Łagodnie i pikantnie (po indyjsku/orientalnie): jogurt naturalny lub grecki, zmieszany z [[Zioła i przyprawy/Czosnek|czosnkiem]], [[Zioła i przyprawy/Miód|miodem]], [[Zioła i przyprawy/Kumin|kuminem]] i [[Zioła i przyprawy/Kolendra|kolendrą]]. * Owocowo-ostro: curry fantastycznie komponuje się z mango chutney, ananasem lub morelą, w połączeniu z odrobiną chili lub [[Zioła i przyprawy/Sambal oelek|sambal oelek]]. * Sycąco-pikantnie: [[Zioła i przyprawy/Olej rzepakowy|olej rzepakowy]], [[Zioła i przyprawy/Papryka|papryka w proszku]], curry i odrobina soku z [[Zioła i przyprawy/Cytryna|cytryny]] do mięsa z grilla. == Przypisy == {{Przypisy}} {{BrClear}} <noinclude>{{Wolumin}}</noinclude> fc7c2nos7lf0wumuggrpin64x8fjr9h Wikibooks:Moduły/StronicowyParser/SpisTreści 4 63522 545801 544656 2026-06-04T12:31:42Z Persino 2851 /* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */ 545801 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_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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 == === {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A Następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. === {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === ==== Opis funkcji ==== ==== Funkcje lokalne ==== ===== {{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Code|iteratorTekstuNaglowka}} ===== ===== {{Code|LiniaArtykulow}} ===== ===== {{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Code|CzyZaliczac}} ====== ===== {{Code|AnalizaLiniiObiekty}} ===== === {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Code|Spis}} ===== ===== {{Code|InneSpisy}} ===== ===== {{Code|SpisRzeczy}} ===== ===== {{Code|IteratorFun}} ===== ===== {{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 51gdbhl94qjoak7s5zh6r37yevw2pik 545802 545801 2026-06-04T12:34:10Z Persino 2851 /* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */ 545802 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_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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 == === {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. === {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === ==== Opis funkcji ==== ==== Funkcje lokalne ==== ===== {{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Code|iteratorTekstuNaglowka}} ===== ===== {{Code|LiniaArtykulow}} ===== ===== {{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Code|CzyZaliczac}} ====== ===== {{Code|AnalizaLiniiObiekty}} ===== === {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Code|Spis}} ===== ===== {{Code|InneSpisy}} ===== ===== {{Code|SpisRzeczy}} ===== ===== {{Code|IteratorFun}} ===== ===== {{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pdnufhha7cgaqh5njidxpdr7qmmikcb 545804 545802 2026-06-04T12:59:25Z Persino 2851 /* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */ 545804 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_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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 == === {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. A gdy dla elementów, jeśsli 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{Code|{{sr|#p["UsuńWywołaniaPlików"]|p=Specjalne}}}} i {{Code|{{sr|#p["UsuńInterwiki"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funnkcji kompletowane są zwarcane, które z niej są usuwane znaki specjalne z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, i znaki białe z końców tekstu i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === ==== Opis funkcji ==== ==== Funkcje lokalne ==== ===== {{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Code|iteratorTekstuNaglowka}} ===== ===== {{Code|LiniaArtykulow}} ===== ===== {{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Code|CzyZaliczac}} ====== ===== {{Code|AnalizaLiniiObiekty}} ===== === {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Code|Spis}} ===== ===== {{Code|InneSpisy}} ===== ===== {{Code|SpisRzeczy}} ===== ===== {{Code|IteratorFun}} ===== ===== {{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> a1eret7l781ul5iwc91zxj8eam0k8p3 545806 545804 2026-06-04T13:08:39Z Persino 2851 /* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */ 545806 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_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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 == === {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. A gdy dla elementów, jeśsli 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === ==== Opis funkcji ==== ==== Funkcje lokalne ==== ===== {{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Code|iteratorTekstuNaglowka}} ===== ===== {{Code|LiniaArtykulow}} ===== ===== {{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Code|CzyZaliczac}} ====== ===== {{Code|AnalizaLiniiObiekty}} ===== === {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Code|Spis}} ===== ===== {{Code|InneSpisy}} ===== ===== {{Code|SpisRzeczy}} ===== ===== {{Code|IteratorFun}} ===== ===== {{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> sk14cnwztuesqcuwo2bja1drh04dg6p 545809 545806 2026-06-04T13:28:08Z Persino 2851 /* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */ 545809 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_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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 == === {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === ==== Opis funkcji ==== ==== Funkcje lokalne ==== ===== {{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Code|iteratorTekstuNaglowka}} ===== ===== {{Code|LiniaArtykulow}} ===== ===== {{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Code|CzyZaliczac}} ====== ===== {{Code|AnalizaLiniiObiekty}} ===== === {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Code|Spis}} ===== ===== {{Code|InneSpisy}} ===== ===== {{Code|SpisRzeczy}} ===== ===== {{Code|IteratorFun}} ===== ===== {{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> l0m18g56m63qr3g7qrzeqmxcmt55hmb 545811 545809 2026-06-04T14:04:07Z Persino 2851 545811 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_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === ==== Opis funkcji ==== ==== Funkcje lokalne ==== ===== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> j5i7ei3n0v04b569ck5ppmgqc1mdz7c 545812 545811 2026-06-04T14:37:02Z Persino 2851 /* {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} */ 545812 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_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== ==== Funkcje lokalne ==== ===== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3pv2mdvidwpllekd6ancf9l7ejcnoa7 545813 545812 2026-06-04T14:42:44Z Persino 2851 /* {{Śródtytuł|Ile}}{{Code|Ile}} */ 545813 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== ==== Funkcje lokalne ==== ===== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> b799x8jnv81eqtkqq5ay2uptqm2r9bi 545814 545813 2026-06-04T14:44:17Z Persino 2851 545814 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== ==== Funkcje lokalne ==== ===== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> oxqmxj4qbn24bdszl3frw2uxd9vezvy 545815 545814 2026-06-04T15:07:35Z Persino 2851 /* Opis funkcji */ 545815 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}, i tabelę rozkładu elementów w niej na czynniki pierwsze. ==== Funkcje lokalne ==== ===== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5lplnc0cen57ycav36xtsvup92xq2rg 545816 545815 2026-06-04T15:08:01Z Persino 2851 /* {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} */ 545816 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}, i tabelę rozkładu elementów w niej na czynniki pierwsze. ==== Funkcje lokalne ==== ===== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> f0hvup0xmqqihop9zhi3nqq8zscu402 545817 545816 2026-06-04T15:12:46Z Persino 2851 /* {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} */ 545817 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}}, i tabelę rozkładu elementów w niej na czynniki pierwsze, tzn.: {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}}, co jest napisane w module: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, a w dokumentacji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron}}}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rm44wvhv22h91t1rt72yuz92xeq3s3n 545818 545817 2026-06-04T15:13:40Z Persino 2851 /* Opis funkcji */ 545818 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ===== ===== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ===== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 05orlnbax18vnq822ehooin55or6xzs 545819 545818 2026-06-04T15:36:54Z Persino 2851 /* Funkcje lokalne */ 545819 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} ===== ====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ====== ====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7l0slwlj0f573ghy3oip7p73cvy4qyg 545820 545819 2026-06-04T16:04:44Z Persino 2851 /* {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} */ 545820 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== Funkcje lokalne ==== ===== {{Ś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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokości zerowej. Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}. ====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ====== ====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> itlyy4z2uldu4omqcnfd3r8f3kfnnty 545821 545820 2026-06-04T16:06:02Z Persino 2851 /* Funkcje lokalne */ 545821 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokości zerowej. Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}. ====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ====== ====== {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ktutdh1b4jha1z8fohbee668bmtyfkr 545822 545821 2026-06-04T16:33:06Z Persino 2851 /* {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} */ 545822 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokości zerowej. Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}. ====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ====== Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}: <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}} ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> smqp2wszl1a64oc5ynmg0xl5ptrdx12 545823 545822 2026-06-04T16:34:38Z Persino 2851 /* {{Śródtytuł|Ile}}{{Code|Ile}} */ 545823 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokości zerowej. Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}. ====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ====== Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}: <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}} ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fkgllr0id4sao8atmw73zindo0ozn0u 545824 545823 2026-06-04T16:37:19Z Persino 2851 /* {{Śródtytuł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */ 545824 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokości zerowej. Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}. ====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ====== Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}: <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}} ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nb6lrm37x9l45er2d89tepqjcu8v1hy 545825 545824 2026-06-04T16:38:29Z Persino 2851 /* {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} */ 545825 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokości zerowej. Funkcja ma w sobie dwie definicje funkcji: {{LinkŚródtytuł|PomijajLinkiOrazLicencje}} i {{LinkŚródtytuł|CzySzablonLinkLubLicencja}}. ====== {{Śródtytuł|PomijajLinkiOrazLicencje}}{{Code|PomijajLinkiOrazLicencje}} ====== Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}} ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> az8b831ur3z6qrk85l4ffmtf4qphxwf 545826 545825 2026-06-04T16:44:49Z Persino 2851 /* {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} */ 545826 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} {{Patrz|szablon}} - ciąg znakowy, jakiegoś elementu bazowego {{Code|{{m|Szablonowe}}}}, obiektu, * {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu, * {{Code|kod}} {{Patrz|kod}} - numer obiektu. ====== {{Ś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}} ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> epx9deaid7o53se2hibqj9n0tusalak 545827 545826 2026-06-04T16:46:17Z Persino 2851 /* {{Śródtytuł|FunkcjaIteratoraTekstuZakodowego}}{{Code|FunkcjaIteratoraTekstuZakodowego}} */ 545827 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}} ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> tqasjx5gjek9k82qbjh3p5qa4lhcpup 545830 545827 2026-06-04T17:21:40Z Persino 2851 /* {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} */ 545830 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- jak w: {{LinkPatrz|szablon}}. ===== Dalszy opis funkcji ===== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> t1nx6v64fi5kkbchj2u7so7ni4kqdxp 545831 545830 2026-06-04T17:22:14Z Persino 2851 /* Dalszy opis funkcji */ 545831 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6eincykcgnr1oh85l2nc9jk39a58eaa 545832 545831 2026-06-04T17:24:14Z Persino 2851 /* {{Śródtytuł|CzySzablonLinkLubLicencja}}{{Code|CzySzablonLinkLubLicencja}} */ 545832 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q6ojevjqou9x33qfn3f7tl9qwyvrxfy 545836 545832 2026-06-04T18:26:48Z Persino 2851 /* {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} */ 545836 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 48ge6qikkaeay3a99j0hpyzr6k0uc0w 545837 545836 2026-06-04T18:30:37Z Persino 2851 /* Funkcje lokalne */ 545837 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- jak w: {{LinkPatrz|szablon}}. ===== {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} ===== ===== {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bjnoaktriph4ded0zqfjmr87qdbb40q 545838 545837 2026-06-04T18:59:19Z Persino 2851 /* {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} */ 545838 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy. 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|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}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pmfw477xg3w3kat0lzv8ek2hap4p256 545839 545838 2026-06-04T19:00:07Z Persino 2851 /* {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} */ 545839 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy. 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}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> erwifo1o5loxcey8gco3g1sqdculquq 545840 545839 2026-06-04T19:02:24Z Persino 2851 /* {{Śródtytuł|iteratorTekstuNaglowka}}{{Code|iteratorTekstuNaglowka}} */ 545840 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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}} ===== ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ehxvqzfoxc8nqvf72o6po4scwnz3t9y 545841 545840 2026-06-04T19:20:45Z Persino 2851 /* {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} */ 545841 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> l80ynm914hxo3wbq173gic1vk55qcli 545842 545841 2026-06-04T19:34:09Z Persino 2851 /* {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} */ 545842 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunnkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gpsxle2k7jovm8hv3f2dxgjfyij4jir 545843 545842 2026-06-04T19:36:50Z Persino 2851 /* {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} */ 545843 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> am29skipogdzn8z1z0vwlhkx54pkjpc 545849 545843 2026-06-04T20:32:19Z Persino 2851 /* {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} */ 545849 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami,która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LikPatrz|tabela_rozdzial_artykulow}}. 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> ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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 sekcja czy w {{LinkPatrz|tab_stare}}, czy istnieje element {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}} i dalszy {{Code|tab_stare[2][1]}} {{LinkPatrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}} taki: {{Code|#przedrostek_listy}}, a jeżzeli to sprawdzenie przeszło pozytywnie,który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> av9ljwiscz2nzux3s0jfvffvbexnbf4 545850 545849 2026-06-04T20:32:47Z Persino 2851 /* {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} */ 545850 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami,która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}. 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> ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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 sekcja czy w {{LinkPatrz|tab_stare}}, czy istnieje element {{Code|tab_stare[2]}} {{Patrz|tab_stare[2]}} i dalszy {{Code|tab_stare[2][1]}} {{LinkPatrz|tab_stare[2][1]}} - ten element jest to w: {{Code|tab_stare}} taki: {{Code|#przedrostek_listy}}, a jeżzeli to sprawdzenie przeszło pozytywnie,który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7smxwu6957rqo3kfq4wrioalinudd5g 545851 545850 2026-06-04T20:33:21Z Persino 2851 /* Dalszy opis funkcji */ 545851 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami,która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{LinkPatrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}. 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> ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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}} {{Patrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w {{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}}, a jeżzeli to sprawdzenie przeszło pozytywnie,który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jnhq1ebjtf7gf0ymd83wf1irgj2w6ud 545852 545851 2026-06-04T20:33:55Z Persino 2851 /* {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} */ 545852 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami,która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}. 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> ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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}} {{Patrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w {{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}}, a jeżzeli to sprawdzenie przeszło pozytywnie,który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2h93up1q3x2a6famqnuq0hqmkm8rnn9 545853 545852 2026-06-04T20:35:22Z Persino 2851 /* {{Śródtytuł|LiniaArtykulow}}{{Code|LiniaArtykulow}} */ 545853 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami,która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}. 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> ====== {{Śródtytuł|CzyZaliczac}}{{Code|CzyZaliczac}} ====== Funkcja sprawdza, czy z początkiem linii pozycji listy, bez przedrostka listy, jest z możliwym cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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}} {{Patrz|czy_linia_uwzgledniana}}. Funkcja sprawdza, czy sekcja czy w {{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}}, a jeżzeli to sprawdzenie przeszło pozytywnie,który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8rjbqtifmkvl87nbgevv8w7fxt8jmm0 545854 545853 2026-06-04T20:41:00Z Persino 2851 /* {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} */ 545854 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami,która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}. 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: * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} - czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu. Parametry zwracanej funkcji przez tę w nagłówku: * {{Code|tabela_rozdzial_artykulow2}} -jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_podtablicy_w_tablicy}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - jaka 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 cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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 sekcja czy w {{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}}, a jeżzeli to sprawdzenie przeszło pozytywnie,który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5571jaodqndflqyjl8b1wmgasq76v8a 545855 545854 2026-06-04T20:41:25Z Persino 2851 /* {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} */ 545855 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami,która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}. 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: * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} - czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu. Parametry zwracanej funkcji przez tę w nagłówku: * {{Code|tabela_rozdzial_artykulow2}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_podtablicy_w_tablicy}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - jaka 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 cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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 sekcja czy w {{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}}, a jeżzeli to sprawdzenie przeszło pozytywnie,który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> smvzdaopw7vv0zrxw3bpfvab6ozkjm6 545856 545855 2026-06-04T20:44:57Z Persino 2851 /* {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} */ 545856 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}. 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: * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} - czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu. Parametry zwracanej funkcji przez tę w nagłówku: * {{Code|tabela_rozdzial_artykulow2}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_podtablicy_w_tablicy}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - jaka 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 cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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 sekcja czy w {{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}}, a jeżzeli to sprawdzenie przeszło pozytywnie,który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 39zt2sy2njlz19ba8s9jde452s2qgcg 545857 545856 2026-06-04T20:45:58Z Persino 2851 /* Dalszy opis funkcji */ 545857 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}. 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: * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} - czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu. Parametry zwracanej funkcji przez tę w nagłówku: * {{Code|tabela_rozdzial_artykulow2}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_podtablicy_w_tablicy}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - jaka 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 cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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 sekcja czy w {{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}}, a jeżeli to sprawdzenie przeszło pozytywnie,który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q5g8xn1aswm1a9y8k05122libqedpw3 545858 545857 2026-06-04T20:47:31Z Persino 2851 /* {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} */ 545858 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}. 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: * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} - czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu. Parametry zwracanej funkcji przez tę w nagłówku: * {{Code|tabela_rozdzial_artykulow2}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_podtablicy_w_tablicy}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - jaka 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 cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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 sekcja czy w {{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}}, a jeżeli to sprawdzenie przeszło pozytywnie,który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ol4vvlc2k7sg9hnjuyx1lrc7xiqfepf 545859 545858 2026-06-04T20:48:43Z Persino 2851 /* Dalszy opis funkcji */ 545859 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_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, 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 przetłumaczonych na małą literę, ale przedtem na nią 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ą, na podstawie metafunkcji: {{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: <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> A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}. 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_artykulow)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element, * {{Code|tabela_rozdzial_artykulow}} - 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_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}}, 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 funkcji: * {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - 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}}, * {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - 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łókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak 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_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,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: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}}, * {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, * {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}}, * {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}}, * {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}}, * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - 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}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, * {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy, * {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię, * {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział, * {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim, * {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - 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 punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Definicja funkcji w nagłówku: <syntaxhighlight lang="lua"> __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); </syntaxhighlight> Parametry funkcji: * {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - 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 zddefiniowana 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 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 parametry, 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 zoistał 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: * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - 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 nieistnnieniu 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,ktore 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 {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=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 fubkcji: * {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}}, * {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}. Gdzie {{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 czwraty 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 {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}: <syntaxhighlight lang="lua"> return tab_artykul,znaki_niedozwolone,tablica_przekierowania; </syntaxhighlight> ===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} ===== Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację. Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_nazwach_linkowych={ ["Korekta"] =2, }; </syntaxhighlight> Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby. Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę: <syntaxhighlight lang="lua"> p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={ }; </syntaxhighlight> W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwijanieNazwy(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod. ==== Dalszy opis funkcji 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: {{Code|tablica_artykulow_zebranych}} ====== Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}. ; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; </syntaxhighlight> ; Przeciwny przypadek 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> Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy 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> Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{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: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{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 {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}. 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ę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, 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 defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio: <syntaxhighlight lang="lua"> tablica_artykulow_zebranych[3]=true; </syntaxhighlight> Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez. ====== Rozwijanie nazwy linku ====== Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. 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: {{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_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według: <syntaxhighlight lang="lua"> if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[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 {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie 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 {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}. Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}. Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej. Jeżeli 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ą {{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 {{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 {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{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: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}. * Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, 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 fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, 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 zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. * Dla trzeciego i czwartego takiego elementu z: {{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_artykulow}} ====== Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, 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 {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. 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 ---- Poczatek 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: { 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/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce; true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie; czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach; }; ---- 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ą; przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])"; tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu; w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym; }, linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare"; true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil; true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika; ---- Początek elementów alternaatywnych Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- 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ł|AnalizaNapisuWprowadzeniaTekstu}}{{Code|p.AnalizaNapisuWprowadzeniaTekstu}} === Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei 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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów, * {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu. 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 {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden,jest tablica {{Code|{{sr|#p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={ ["MDL:RozszerzonyLink"]=1, ["Kompletność"]="", ["Kompletność krótka"]="", ["Kompletność junior"]="", ["Książka"]="", }; </syntaxhighlight> Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego. 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 tch tabelach. Jeżeli przy którym wywolaniu 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ę funkcj 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ą. 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 spradzanie , 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 adreesem 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 jezelijest tym linkiem, to funkcja składania zwraca też jak poprzednio nazwę linku lub jego adres wewnętrzny, ewentualnie z dodatkiem. A gdy nie, to w innym przypadku sprawwdzane, czy to jest inny link wewnętrzny generowane przez szablony, która spradza funkcja tutaj: {{Code|{{sr|#p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli szablon jest tym linkiem, to kunkcja składania zwraca jego nazwę linkową. A następnym krokiem jest sprawdzanie,czy nazwa szablonujest jednych z elementów z tablicy: {{Patrz|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}}}}: <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 zkompletowany szablon bez rozwijania jego, pod warunkiemjeżeli jest tym szablonem o tej nazwę szablonu wywołującego. Te powyżej elementy dla funkcji parametrów, w niej wartości są zwarcane 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. 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 nnie ma zawartości, to przez funkcję skłądania 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 {{Strong|HTML}}, co po zamienieniu ta ona jest zwracana. A jeżeli wartość {{Code|obiekt}} jest nie równa: {{Code|MATH}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} lub {{Code|INNEPRE}}, wtedy z zawartości zmiennej {{Code|szablon}} są wykorzystanne funkcje z modułu {{Code|{{ld2|Specjalne}}}}, które w tej podanej zmiennej są usuwane z komentarze z: {{Code|{{sr|#p["UsuńKomentarze"]|p=Specjalne}}}}, zamieniane są 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}}}}. Są też usuwane znaczniki na podstawie: {{Code|{{sr|#p["UsuńZnaczniki"]|p=Specjalne}}}}. Z tekstu szablonu są usuwane normalne kategorie nieszablonowe: {{Code|{{sr|#p"UsuńKategorie"]|p=Specjalne}}}}. Są też usuwane z zawartości wywołania plików i interwiki z: {{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 z: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}. A gdy mamy do czynienia z innymi znacznikami, to są zwracane jest zamiast niego wartość pusta do funkcji kompletowania. Dane z funkcji kompletowane są zwracane, które z niej są usuwane 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 i powtarzarzające się te znaki kolejne z 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 robione w funkcji w nagłówku są zwracane do niej, to jest, co uzyskujemy nazwa rozdziału w postaci przetworzonej. === {{Śródtytuł|ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}}{{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} === Opisane tutaj są podfunkcje, z których korzysta ta funkcja, co one robią, do czego są wykorzystane. ==== Opis funkcji ==== Fubkcja 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 niegp tablica {{LinkPatrz|tab_stare}}, która w odpowiedni po przekształaceniach wsadzana jest do tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy dany spis treści dla książki dla jej artykułu korzystanego, dla innej książki, wtedy to artykuł niekorzystany, * {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}} - jest to wewnętrzny adres książki głównego spisu treści,jest to taki adresm na który wskazuje przekierowanie innej książki, * {{Code|__FUNKCJA_ZBIERANIA_DANYCH}} {{Patrz|__FUNKCJA_ZBIERANIA_DANYCH}} - 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}}}}. ==== 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 linkuinteligentnego, czy innego służacego 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 okreslonym wzorem {{Code|<nowiki>\n([#:*;]+)</nowiki>}} z mozliwym 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 link lub 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 okreslonym ciągiem znakowym o szwerokoś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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - 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: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. Funkcja sprawwdza, czy to są szablony spisu treści określone tablicąo kluczach, którymi są nazwy szablonów, z wartościami {{Code|true}}, czyli: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> czy to są szablony ozdobne woluminu, którego tablica: {{Code|{{sr|#p.szablony_ozdobne_stron_woluminu|p=StronicowyParser/obiekty}}}}, jest podobnie zbudowana, co poprzednia: <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 jeednak 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}}}}: <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: <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}}, nna podstawie parsowania tekstu szablonu funkcją: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, z parsowanym przechwytywanym typem obiektu {{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 policznych 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: * {{Code|szablon}}- 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: * Brak parametrów. 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: * {{Code|przedrostek_listy}} - przedrostek pozycji listy, dla rozdziałów dodatnich jest wartością pustą, * {{Code|tekstowy_przedrostek}} - numeracja pozycji w liście lub w nagłówku dodatnim, * {{Code|wyzyskane_wywolanie_szablonu_spis_tresci}} - jest to rozdział bez nueracji i przedrostka pozycji listy, * {{Code|true/false}} - wartość {{Code|true}} świardczy 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: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Rozdzziela linię na wiele obsługiwanych podlinii. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaArtykulow(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - pojedyncza przetworzona linia. ====== {{Śródtytuł|SzablonAnalizujKompletnosc}}{{Code|SzablonAnalizujKompletnosc}} ====== Funkcja sprawdza, czy danwe wywołania szablonu ma swoją jej nazwę szablonu, który jest szablonem kompletowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function SzablonAnalizujKompletnosc(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon}}. ====== Dalszy opis funkcji ====== Możliwe są dwie opcje, szablon kopletowania jest pierwszy, a drugi drugi, lub odwrotnie. Funkcja obsługuje te oba przypadki. Ona stawia przecinem dla oby wersji ustawień, aby rozdzialić funkcję na elementy przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.split|n=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 {{Strong|HTML}} przecinka są zamieniane na zwykły przecinek. Funkcja zwraca tabelę podzielonej linii na mniejsze podlinię,który można iterrować funkcją: {{Code|pairs}} lub {{Code|ipairs}}. ===== {{Śródtytuł|WsadzanieParametryDoTablicy}}{{Code|WsadzanieParametryDoTablicy}} ===== Funkcja z parametrami, która uruchamia inną funkcję uruchamianą w: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}, która wstawia tabelę {{LinkPatrz|tab_stare}}, do ogólnej tablicy: {{Code|tabela_rozdzial_artykulow2}} {{Patrz|tabela_rozdzial_artykulow2}}, ewentualnie do {{Code|tabela_rozdzial_artykulow}} {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycję {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}. 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: * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, * {{Code|czy_linia_uwzgledniana}} {{Patrz|czy_linia_uwzgledniana}} - czy linię ma uwzględnić w powiększaniu poziomu o jeden dla artykułu. Parametry zwracanej funkcji przez tę w nagłówku: * {{Code|tabela_rozdzial_artykulow2}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}}, * {{Code|numer_podtablicy_w_tablicy}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, * {{Code|tab_stare}} - jaka 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 cudzysłowem, po którym następują liczby, litery, lub myślniki dolne, w takim pzypadku linia nie może składać się z nich, po ktorym występują znaki interpunkcyjne. Jeśli to sprawdzenie było pozytywne funkcja zwraca wartość logiczną odpwowiadającą {{Code|true}}, w przeciwnym wypadku jak {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyZaliczac()...end; </syntaxhighlight> Parametry funkcji: * Brak parametrów funkcji. 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 ====== Fubkcja 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 sekcja czy w {{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}}, a jeżeli to sprawdzenie przeszło pozytywnie, który dla tego jest poziomem listy, lub zerowego rozdziału lub rozdziału dodatniego. ===== {{Śródtytuł|AnalizaLiniiObiekty}}{{Code|AnalizaLiniiObiekty}} ===== ==== Dalszy opis funkcji ==== === {{Śródtytuł|CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}}{{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} === === {{Śródtytuł|ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}}{{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} === ==== Opis funkcji ==== ==== Fukcje lokalne ==== ===== {{Śródtytuł|Spis}}{{Code|Spis}} ===== ===== {{Śródtytuł|InneSpisy}}{{Code|InneSpisy}} ===== ===== {{Śródtytuł|SpisRzeczy}}{{Code|SpisRzeczy}} ===== ===== {{Śródtytuł|IteratorFun}}{{Code|IteratorFun}} ===== ===== {{Śródtytuł|ZbieranieDanychStronZAutonawigacji}}{{Code|ZbieranieDanychStronZAutonawigacji}} ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 80yzvrkafw56xg865sikfmac5zqmtmh Śpiewnik/Polak nie sługa 0 63658 545880 2026-06-05T06:39:00Z Ashaio 4702 nowa pieśń 545880 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Opis == Piosenka zdobyła popularność podczas powstania listopadowego. Jej wariant ''{{sr|Serce nie sługa}}'' pojawia się jako śpiewka Zosi w pierwszej scenie III aktu sztuki ''Zabobon, czyli krakowiacy i górale'' z 1816 roku. == Muzyka == '''Autor:''' Karol Kurpiński <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Polak nie sługa" poet = "Słowa: Jan Nepomucen Kamiński" composer = "Muzyka: Karol Kurpiński" arranger = "Aranżacja: Franciszek Barański" tagline = "" } \score{ \new PianoStaff << \new Staff = "RH" { \clef treble \key g \major \time 3/4 \tempo 4 = 120 \autoBeamOff <b d' g'>4 <g' b'>4. <a' c''>8 | <c'' e''>4 <b' d''> r | <c'' e''>8 <b' d''> <a' c''>4. <fis' a'>8 | <a' c''>4 <g' b'> r | <d' g'>4 <g' b'>4. <a' c''>8 | <c'' e''>4 <b' d''> r | <c'' e''>8 <b' d''> <a' c''>4. <fis' a'>8 | <fis' a'>4 <b d' g'> r | \repeat volta 2 { d'8([ fis')] <fis' a'>4. <d' fis'>8 | <d' g'>4 <g' b'> r | <c'' e''>8. <b' d''>16 <a' c''>4. <fis' a'>8 | <a' c''>4 <g' b'> r | <g' b'>4 <g' b'>4. <a' c''>8 | <c'' e''>4 <b' d''> r | <c'' e''>8 <b' d''> <a' c''>4. <fis' a'>8 | <fis' a'>4 <b d' g'> r | } } \addlyrics { \small { Po -- lak nie słu -- ga, nie zna co to pa -- ny, Nie da się o -- kuć prze -- mo -- cą w_kaj -- da -- ny. Wol -- no -- ścią ży -- je, do wol -- no -- ści wzdy -- cha, Bez niej jak kwia -- tek bez wo -- dy u -- sy -- cha. } } \new Staff = "LH" { \clef bass \key g \major \time 3/4 g,4 <d g b> <d g b> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | g, <d g b> <d g b> | g,4 <d g b> <d g b> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | <d, d> <g, g> r | \repeat volta 2 { <d, d> <fis a c'> <fis a c'> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | g, <d g b> <d g b> | g,4 <d g b> <d g b> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | <d, d> <g, g> r | } } >> \midi{} \layout{} } </score> <br> '''Źródło:''' Franciszek Barański, ''[https://polona.pl/item-view/9df32064-1fac-4fe8-93c6-a2186dd3d37a?page=267 Jeszcze Polska nie zginęła : pieśni patrjotyczne i narodowe]''. Lwów, Księgarnia Polska Bernarda Połonieckiego, [post 1910]. Pieśń 20, s. 17. == Tekst == '''Autor:''' Jan Nepomucen Kamiński<br> {{Kolumny|3| <poem> 1. Polak nie sługa, nie zna co to pany, Nie da się okuć przemocą w kajdany. Wolnością żyje, do wolności wzdycha, Bez niej jak kwiatek bez wody usycha. 2. Siedzi w klateczce więziona ptaszyna, Że była wolną, sobie przypomina. A choć jej ptasznik dość daje żywności, Jednak przez szczeble wzdycha do wolności. 3. Siedź cicho ptaszku i ciesz się nadzieją, Że dni pogodne tobie zajaśnieją. Masz mnóstwo braci – doczekaszli chwili, Żeby ci wyjście z klatki ułatwili. 4. Niemiec<ref>Zamiast Niemca „Arab” – w 3. tomie ''[https://polona.pl/item-view/a88f7ab4-6c86-43d9-af42-24042b773dcf?page=130 Lutni polskiej]'' Leona Kociałkowskiego, wydanej w 1885 r. w Poznaniu, s. 131.</ref> łakomy na złoto i srebro I politycznie kradnie cudze dobro – Moskal byle miał dziegcia do sytości, Sam tylko Polak wzdycha do wolności. 5. Anglik w przemyśle zatopiony cały, W nim szuka chluby i swej własnej chwały; Francuz wydaje dzieła o miłości, Sam tylko Polak wzdycha do wolności. 6. Prusak<ref>Zamiast Prusaka „Greczyn” – w ''Lutni polskiej'' Leona Kociałkowskiego.</ref> zdradliwy nikomu nie ufa, Bitny Szwed uległ i swych królów słucha. Hiszpan oddany cały pobożności, Sam tylko Polak wzdycha do wolności. 7. Sułtan turecki wzdycha do seraju, Wszedłszy do niego myśli, że jest w raju. Węgier do wina – a Włoch do gnuśności, Sam tylko Polak wzdycha do wolności. 8. Tak orzeł biały, uległy przemocy I pognębiony od orła z północy, Jest przy nadziei, że wolność odzyska, Skoro mu chwila pomyślna zabłyska. 9. Tka więc Rodacy! Wolności nam trzeba, Zamiarom naszym sprzyjać będą nieba – Nadejdzie chwila, chwila pożądana, Że zegną wrogi przed Polską kolana!<ref>W ''[https://polona.pl/item-view/a88f7ab4-6c86-43d9-af42-24042b773dcf?page=131 Lutni polskiej]'' Leona Kociałkowskiego dwie ostatnie strofy wykropkowane.</ref> </poem> }} '''Źródło:''' Franciszek Barański, ''[https://polona.pl/item-view/9df32064-1fac-4fe8-93c6-a2186dd3d37a?page=267 Jeszcze Polska nie zginęła : pieśni patrjotyczne i narodowe]''. Lwów, Księgarnia Polska Bernarda Połonieckiego, [post 1910]. Pieśń 20, s. 80. == Zobacz też == {{Wikisource|Polak_nie_sługa|Polak nie sługa}} * ''[https://bibliotekapiosenki.pl/utwory/Piesn_o_wolnosci_(sl_Jan_Nepomucen_Kaminski) Pieśń o wolności]'' w serwisie ''[https://bibliotekapiosenki.pl Cyfrowa Biblioteka Polskiej Piosenki]'' == Przypisy == <references /> 8hioj2g7asakhjhqnhx7upmh1m6remw 545881 545880 2026-06-05T06:40:46Z Ashaio 4702 lit. 545881 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Opis == Piosenka zdobyła popularność podczas powstania listopadowego. Jej wariant ''{{sr|Serce nie sługa}}'' pojawia się jako śpiewka Zosi w pierwszej scenie III aktu sztuki ''Zabobon, czyli krakowiacy i górale'' z 1816 roku. == Muzyka == '''Autor:''' Karol Kurpiński <score raw=1 vorbis=1> \version "2.20.0" \header{ title = "Polak nie sługa" poet = "Słowa: Jan Nepomucen Kamiński" composer = "Muzyka: Karol Kurpiński" arranger = "Aranżacja: Franciszek Barański" tagline = "" } \score{ \new PianoStaff << \new Staff = "RH" { \clef treble \key g \major \time 3/4 \tempo 4 = 120 \autoBeamOff <b d' g'>4 <g' b'>4. <a' c''>8 | <c'' e''>4 <b' d''> r | <c'' e''>8 <b' d''> <a' c''>4. <fis' a'>8 | <a' c''>4 <g' b'> r | <d' g'>4 <g' b'>4. <a' c''>8 | <c'' e''>4 <b' d''> r | <c'' e''>8 <b' d''> <a' c''>4. <fis' a'>8 | <fis' a'>4 <b d' g'> r | \repeat volta 2 { d'8([ fis')] <fis' a'>4. <d' fis'>8 | <d' g'>4 <g' b'> r | <c'' e''>8. <b' d''>16 <a' c''>4. <fis' a'>8 | <a' c''>4 <g' b'> r | <g' b'>4 <g' b'>4. <a' c''>8 | <c'' e''>4 <b' d''> r | <c'' e''>8 <b' d''> <a' c''>4. <fis' a'>8 | <fis' a'>4 <b d' g'> r | } } \addlyrics { \small { Po -- lak nie słu -- ga, nie zna co to pa -- ny, Nie da się o -- kuć prze -- mo -- cą w_kaj -- da -- ny. Wol -- no -- ścią ży -- je, do wol -- no -- ści wzdy -- cha, Bez niej jak kwia -- tek bez wo -- dy u -- sy -- cha. } } \new Staff = "LH" { \clef bass \key g \major \time 3/4 g,4 <d g b> <d g b> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | g, <d g b> <d g b> | g,4 <d g b> <d g b> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | <d, d> <g, g> r | \repeat volta 2 { <d, d> <fis a c'> <fis a c'> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | g, <d g b> <d g b> | g,4 <d g b> <d g b> | g, <d g b> <d g b> | <d, d> <fis a c'> <fis a c'> | <d, d> <g, g> r | } } >> \midi{} \layout{} } </score> <br> '''Źródło:''' Franciszek Barański, ''[https://polona.pl/item-view/9df32064-1fac-4fe8-93c6-a2186dd3d37a?page=267 Jeszcze Polska nie zginęła : pieśni patrjotyczne i narodowe]''. Lwów, Księgarnia Polska Bernarda Połonieckiego, [post 1910]. Pieśń 20, s. 17. == Tekst == '''Autor:''' Jan Nepomucen Kamiński<br> {{Kolumny|3| <poem> 1. Polak nie sługa, nie zna co to pany, Nie da się okuć przemocą w kajdany. Wolnością żyje, do wolności wzdycha, Bez niej jak kwiatek bez wody usycha. 2. Siedzi w klateczce więziona ptaszyna, Że była wolną, sobie przypomina. A choć jej ptasznik dość daje żywności, Jednak przez szczeble wzdycha do wolności. 3. Siedź cicho ptaszku i ciesz się nadzieją, Że dni pogodne tobie zajaśnieją. Masz mnóstwo braci – doczekaszli chwili, Żeby ci wyjście z klatki ułatwili. 4. Niemiec<ref>Zamiast Niemca „Arab” – w 3. tomie ''[https://polona.pl/item-view/a88f7ab4-6c86-43d9-af42-24042b773dcf?page=130 Lutni polskiej]'' Leona Kociałkowskiego, wydanej w 1885 r. w Poznaniu, s. 131.</ref> łakomy na złoto i srebro I politycznie kradnie cudze dobro – Moskal byle miał dziegcia do sytości, Sam tylko Polak wzdycha do wolności. 5. Anglik w przemyśle zatopiony cały, W nim szuka chluby i swej własnej chwały; Francuz wydaje dzieła o miłości, Sam tylko Polak wzdycha do wolności. 6. Prusak<ref>Zamiast Prusaka „Greczyn” – w ''Lutni polskiej'' Leona Kociałkowskiego.</ref> zdradliwy nikomu nie ufa, Bitny Szwed uległ i swych królów słucha. Hiszpan oddany cały pobożności, Sam tylko Polak wzdycha do wolności. 7. Sułtan turecki wzdycha do seraju, Wszedłszy do niego myśli, że jest w raju. Węgier do wina – a Włoch do gnuśności, Sam tylko Polak wzdycha do wolności. 8. Tak orzeł biały, uległy przemocy I pognębiony od orła z północy, Jest przy nadziei, że wolność odzyska, Skoro mu chwila pomyślna zabłyska. 9. Tak więc Rodacy! Wolności nam trzeba, Zamiarom naszym sprzyjać będą nieba – Nadejdzie chwila, chwila pożądana, Że zegną wrogi przed Polską kolana!<ref>W ''[https://polona.pl/item-view/a88f7ab4-6c86-43d9-af42-24042b773dcf?page=131 Lutni polskiej]'' Leona Kociałkowskiego dwie ostatnie strofy wykropkowane.</ref> </poem> }} '''Źródło:''' Franciszek Barański, ''[https://polona.pl/item-view/9df32064-1fac-4fe8-93c6-a2186dd3d37a?page=267 Jeszcze Polska nie zginęła : pieśni patrjotyczne i narodowe]''. Lwów, Księgarnia Polska Bernarda Połonieckiego, [post 1910]. Pieśń 20, s. 80. == Zobacz też == {{Wikisource|Polak_nie_sługa|Polak nie sługa}} * ''[https://bibliotekapiosenki.pl/utwory/Piesn_o_wolnosci_(sl_Jan_Nepomucen_Kaminski) Pieśń o wolności]'' w serwisie ''[https://bibliotekapiosenki.pl Cyfrowa Biblioteka Polskiej Piosenki]'' == Przypisy == <references /> 2w2vp8zt857yqyyo2w5tcm237585r53 Śpiewnik/Gdym z kozaki szedł na boje 0 63659 545911 2026-06-05T09:12:59Z Ashaio 4702 nowa pieśń 545911 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Muzyka == '''Autor:''' Stanisław Moniuszko<br> Aranżacja: Leon Kociałkowski<br> <score raw="1" vorbis="1"> \version "2.20.0" \header{ title = "Gdym z kozaki szedł na boje" poet = "Słowa: Władysław Syrokomla (Ludwik Kondratowicz)" composer = "Muzyka: Stanisław Moniuszko" arranger = "Aranżacja: Leon Kociałkowski" tagline = "" } \score{ << \new Staff \with { midiInstrument = "fiddle"} { \clef "violin" \key e \major \time 2/4 \tempo 4=100 \autoBeamOff \relative e'{ gis8 a gis fis16[( e]) | e8 dis16[( e]) fis8 gis | e8 e16[( dis]) cis8 e | dis4 gis,8 r8 | gis'8 b16[( a]) gis8 fis16[( e]) | dis8 dis16[( e]) fis8 gis | dis8 cis16[( e]) e8. dis16 | cis4 e8 r8 | dis8 e fis e16[( fis]) | gis8 gis16[( a]) b8 b | b8 a16[( b]) cis8. gis16 | b4 a8 r8 | a8 b a gis16[( fis]) | e8 e16[( fis]) gis8 cis, | dis8 fis e dis | cis4 cis8 r8 \bar "|." } } \addlyrics{ \small { Gdym z_ko -- za -- ki szedł na bo -- je, mo -- ja Ha -- nna rze -- cze: nie -- siesz, lu -- by, ży -- cie swo -- je na ta -- tar -- skie mie -- cze, Lecz mo -- dli -- twa, płacz dzie -- wczy -- ny w_boju cię o -- ca -- li, ty mi za to, mój je -- dy -- ny, przy -- nieś sznur ko -- ra -- li. } } >> \midi{} \layout{} } </score> '''Źródło:''' Leon Kociałkowski, ''[https://polona.pl/item-view/2ae05be5-c16e-4ecb-800a-bd90ab8ae911?page=58 Lutnia polska : zbiór pieśni i piosenek obyczajowych i okolicznościowych : miłosnych, aryi i dumek, piosenek wiejskich : mazurów, krakowiaków, kujawiaków, obertasów, piosenek dla rzemieślników, weselnych : i różnej innej treści z melodyami. Tomik 2]''. Poznań, 1885. S.&nbsp;59. == Tekst == '''Autor:''' Władysław Syrokomla (Ludwik Kondratowicz)<br> {{Kolumny|3| <poem> 1. Gdym z kozaki szedł na boje, Moja Hanna rzecze: Niesiesz, luby, życie swoje Na tatarskie miecze, ::Lecz modlitwa, płacz dziewczyny ::W boju cię ocali, ::Ty mi za to, mój jedyny, ::Przynieś sznur korali. 2. Bóg kozaczej szczęścił braci; W jednéj boju chwili Chan tatarski wszystko traci, A my gród zdobyli. ::Gdy wyparto krzepkie wrota, ::Gdy się miasto pali, ::Inny srebra, inny złota, ::Jam szukał korali. 3. Wśród rabunku los mi służy, Pan Bóg zdobycz poda, Sznur korali kraśny, duży, Jakby wiśnia młoda. ::Pochwyciwszy zdobycz drogą ::Już nie czekam daléj, ::Spieszę stanąć przed niebogą, ::Dać jéj sznur korali. 4. Pędzę stepem, pędzę błonią, Lecz daremna praca, W naszéj cerkwi dzwony dzwonią, Lud z mogiłek wraca. ::Dobrzy ludzie spieszą ku mnie ::I wołają z dali: ::Twoja Hanka leży w trumnie, ::Nie trzeba korali. 5. Zapłakałem, zajęknąłem I roztrącam rzeszę, I przed cerkwią padam czołem, I przed ołtarz spieszę. ::Do Najświętszéj stóp Maryi ::Niosę moje żale, ::I zawieszam u jéj szyi ::Czerwone korale. </poem> }} '''Źródło:''' Leon Kociałkowski, ''[https://polona.pl/item-view/2ae05be5-c16e-4ecb-800a-bd90ab8ae911?page=58 Lutnia polska : zbiór pieśni i piosenek obyczajowych i okolicznościowych : miłosnych, aryi i dumek, piosenek wiejskich : mazurów, krakowiaków, kujawiaków, obertasów, piosenek dla rzemieślników, weselnych : i różnej innej treści z melodyami. Tomik 2]''. Poznań, 1885. S.&nbsp;60–61. a84c34z1jtyf7zs36ekesu85z5wu2c0