Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.1
first-letter
Media
Specjalna
Dyskusja
Wikipedysta
Dyskusja wikipedysty
Wikibooks
Dyskusja Wikibooks
Plik
Dyskusja pliku
MediaWiki
Dyskusja MediaWiki
Szablon
Dyskusja szablonu
Pomoc
Dyskusja pomocy
Kategoria
Dyskusja kategorii
Wikijunior
Dyskusja Wikijuniora
TimedText
TimedText talk
Moduł
Dyskusja modułu
Wydarzenie
Dyskusja wydarzenia
Niemiecki/Ortografia
0
22503
542684
530536
2026-05-12T06:46:05Z
EdytaT
2664
542684
wikitext
text/x-wiki
{{Rozdział|[[Niemiecki|Język niemiecki]]|Ortografia<br>(''Rechtschreibung'')}}
== Uwagi ogólne (''Allgemein'') ==
* [[Niemiecki/Ortografia/Uwagi|Uwagi ogólne (''Allgemein'')]]
== Interpunkcja (''Zeichensetzung'') ==
* [[Niemiecki/Ortografia/Przecinek|Przecinek (''Komma'')]]
* [[Niemiecki/Ortografia/Apostrof|Apostrof (''Apostroph'')]]
== Pisownia rozdzielna lub łączna (''Getrennt- oder Zusammenschreibung'') ==
* [[Niemiecki/Ortografia/Pisownia złożeń rzeczownika i czasownika|Pisownia złożeń rzeczownika i czasownika (''Verbindungen aus Substantiv und Verb'')]]
* [[Niemiecki/Ortografia/Pisownia złożeń przedrostka i czasownika|Pisownia złożeń przedrostka i czasownika (''Verbindungen aus Präfix und Verb'')]]
* [[Niemiecki/Ortografia/Pisownia przysłówka/partykuły i czasownika|Pisownia złożeń przysłówka/partykuły i czasownika (''Verbindungen aus Adverb/Verbpartikel und Verb'')]]
* [[Niemiecki/Ortografia/Pisownia złożeń z imiesłowem w znaczeniu przymiotnika|Pisownia złożeń z imiesłowem w znaczeniu przymiotnika (''Verbindungen mit Partizip als Adjektiv'')]]
== Pisownia dużą lub małą literą (''Groß- oder Kleinschreibung'') ==
* [[Niemiecki/Ortografia/Pisownia przymiotników w nazwach własnych dużą lub małą literą|Pisownia przymiotników w nazwach własnych]]
* [[Niemiecki/Ortografia/Pisownia przymiotników w stopniu najwyższym dużą lub małą literą|Pisownia przymiotników w stopniu najwyższym]]
* [[Niemiecki/Ortografia/Pisownia liczebników dużą lub małą literą|Pisownia liczebników]]
* [[Niemiecki/Ortografia/Pisownia pojedynczych liter dużą lub małą literą|Pisownia pojedynczych liter]]
== Pisownia s, ss, ß ==
== Skróty (''Abkürzungen'') ==
* [[Niemiecki/Skróty/Ortografia|Skróty]]<ref name=Duden/>
{{Przypisy
|<ref name=Duden>Duden online, ''Sprachwissen (Sprachratgeber)'', [https://www.duden.de/sprachwissen/rechtschreibregeln/abkuerzungen ''Abkürzungen'' ], dostęp 10.01.2026.</ref>
}}
4iyurq0yolsjmdf39td08ey6ypva5xa
542685
542684
2026-05-12T06:47:38Z
EdytaT
2664
/* Pisownia s, ss, ß */
542685
wikitext
text/x-wiki
{{Rozdział|[[Niemiecki|Język niemiecki]]|Ortografia<br>(''Rechtschreibung'')}}
== Uwagi ogólne (''Allgemein'') ==
* [[Niemiecki/Ortografia/Uwagi|Uwagi ogólne (''Allgemein'')]]
== Interpunkcja (''Zeichensetzung'') ==
* [[Niemiecki/Ortografia/Przecinek|Przecinek (''Komma'')]]
* [[Niemiecki/Ortografia/Apostrof|Apostrof (''Apostroph'')]]
== Pisownia rozdzielna lub łączna (''Getrennt- oder Zusammenschreibung'') ==
* [[Niemiecki/Ortografia/Pisownia złożeń rzeczownika i czasownika|Pisownia złożeń rzeczownika i czasownika (''Verbindungen aus Substantiv und Verb'')]]
* [[Niemiecki/Ortografia/Pisownia złożeń przedrostka i czasownika|Pisownia złożeń przedrostka i czasownika (''Verbindungen aus Präfix und Verb'')]]
* [[Niemiecki/Ortografia/Pisownia przysłówka/partykuły i czasownika|Pisownia złożeń przysłówka/partykuły i czasownika (''Verbindungen aus Adverb/Verbpartikel und Verb'')]]
* [[Niemiecki/Ortografia/Pisownia złożeń z imiesłowem w znaczeniu przymiotnika|Pisownia złożeń z imiesłowem w znaczeniu przymiotnika (''Verbindungen mit Partizip als Adjektiv'')]]
== Pisownia dużą lub małą literą (''Groß- oder Kleinschreibung'') ==
* [[Niemiecki/Ortografia/Pisownia przymiotników w nazwach własnych dużą lub małą literą|Pisownia przymiotników w nazwach własnych]]
* [[Niemiecki/Ortografia/Pisownia przymiotników w stopniu najwyższym dużą lub małą literą|Pisownia przymiotników w stopniu najwyższym]]
* [[Niemiecki/Ortografia/Pisownia liczebników dużą lub małą literą|Pisownia liczebników]]
* [[Niemiecki/Ortografia/Pisownia pojedynczych liter dużą lub małą literą|Pisownia pojedynczych liter]]
== Pisownia s, ss, ß ==
* [[Niemiecki/Ortografia/Pisownia s, ss, ß|Pisownia s, ss, ß]]
== Skróty (''Abkürzungen'') ==
* [[Niemiecki/Skróty/Ortografia|Skróty]]<ref name=Duden/>
{{Przypisy
|<ref name=Duden>Duden online, ''Sprachwissen (Sprachratgeber)'', [https://www.duden.de/sprachwissen/rechtschreibregeln/abkuerzungen ''Abkürzungen'' ], dostęp 10.01.2026.</ref>
}}
fvh6zitox9heme7ddvx97x6df5tsvyw
Śpiewnik
0
54239
542634
541750
2026-05-11T14:20:18Z
Ashaio
4702
+2
542634
wikitext
text/x-wiki
__NOTOC__ {{Status|-100%|Muzyka}}
== Wprowadzenie ==
Śpiewnik zawiera wyłącznie utwory na wolnych licencjach oraz takie, do których majątkowe prawa autorskie wygasły (utwory z domeny publicznej).
Preferowaną formą zapisu muzycznego jest tzw. ''lead sheet'', tzn. nutowy zapis melodii jednogłosowej oraz schematyczny zapis towarzyszących akordów. Mile widziane są aranżacje wielogłosowe oraz na głos i fortepian – koniecznie oparte na źródłach.
W spisie treści piosenki podane są w kolejności alfabetycznej. W materiałach dodatkowych można umieścić indeksy chronologiczne, tematyczne itp.
== Pieśni i piosenki ==
{{Kolumny|3|
# {{sr|Alpuhara}}
# {{sr|Anioł pasterzom mówił}}
# {{sr|Auld Lang Syne}}
# {{sr|Bartoszu, Bartoszu}}
# {{sr|Bogurodzica}}
# {{sr|Boże, coś Polskę}}
# {{sr|Boże wieczny, Boże żywy}}
# {{sr|Bóg się rodzi}}
# {{sr|Był Matysek chłop przed laty}}
# {{sr|Bywaj dziewczę zdrowe}}
# {{sr|Choć burza huczy wkoło nas}}
# {{sr|Choćbym ja jeździł we dnie i w nocy}}
# {{sr|Cicha noc}}
# {{sr|Czarna sukienka}}
# {{sr|Czerwone jabłuszko}}
# {{sr|Czerwony pas}}
# {{sr|Cześć polskiej ziemi, cześć}}
# {{sr|Cztery rzeczy w Polsce słyną }}
# {{sr|Dalibóg, że powiem mamie}}
# {{sr|Deutschlandlied}}
# {{sr|Do pracy, razem do pracy}}
# {{sr|Duma ukrainna}}
# {{sr|Dzisiaj w Betlejem}}
# {{sr|Gaude mater}}
# {{sr|Gaudeamus igitur}}
# {{sr|Gdy się Chrystus rodzi}}
# {{sr|God Save the King}}
# {{sr|Góralu, czy ci nie żal}}
# {{sr|Greensleeves}}
# {{sr|Haniu moja, pójdź do domu}}
# {{sr|Hatikvah}}
# {{sr|Hej, bracia opryszki}}
# {{sr|Hej hej, hej hej, do kniej, do kniej}}
# {{sr|Hej koledzy, po mozołach }}
# {{sr|Hej koledzy, z wspólnej czary}}
# {{sr|Hej, z góry, z góry jadą Mazury}}
# {{sr|Hej, żeglujże, żeglarzu}}
# {{sr|Idzie żołnierz borem, lasem}}
# {{sr|Jak dobrze nam}}
# {{sr|Jak to na wojence ładnie}}
# {{sr|Jesienią}}
# {{sr|Jeszcze jeden mazur dzisiaj}}
# {{sr|Kołysanka Brahmsa}}
# {{sr|Komu dzwonią, temu dzwonią}}
# {{sr|Kiedy nam się pora zdarza}}
# {{sr|Krakowianka i kat}}
# {{sr|Kto się w opiekę}}
# {{sr|Kukułeczka}}
# {{sr|Kurdesz}}
# {{sr|Laura i Filon}}
# {{sr|Leci liście z drzewa}}
# {{sr|Lilie}}
# {{sr|Lulajże, Jezuniu}}
# {{sr|Lutni moja ulubiona}}
# {{sr|Małgorzatka}}
# {{sr|Marsylianka}}
# {{sr|Marzenie o grajku}}
# {{sr|Mazurek Dąbrowskiego}}
# {{sr|Mizerna, cicha}}
# {{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|O, gwiazdeczko, coś świeciła}}
# {{sr|O Matko Polko}}
# {{sr|O mój rozmarynie}}
# {{sr|Obie kochał pan}}
# {{sr|Oda do radości}}
# {{sr|Ogródek}}
# {{sr|Oj, chmielu, chmielu}}
# {{sr|Oj ty horo kamennaja}}
# {{sr|Ojcze z niebios Boże Panie}}
# {{sr|Ospały i gnuśny, zgrzybiały ten świat}}
# {{sr|Ozdobo twarzy, pokrętne wąsy}}
# {{sr|Panicz i dziewczyna}}
# {{sr|Pieśń poranna}} (Kiedy ranne wstają zorze...)
# {{sr|Pieśń wieczorna}} (Wszystkie nasze dzienne sprawy...)
# {{sr|Piękna nasza Polska cała}}
# {{sr|Pije Kuba do Jakuba}}
# {{sr|Płynie Wisła, płynie}}
# {{sr|Po cóż ciągle w mieście siedzieć}}
# {{sr|Po nocnej rosie płyń dźwięczny głosie}}
# {{sr|Podolanka}}
# {{sr|Pojedziemy na łów}}
# {{sr|Polska młodzież niech nam żyje}}
# {{sr|Polski przemysł niech nam żyje}}
# {{sr|Potężny Boże}}
# {{sr|Pożegnanie Childe Harolda}}
# {{sr|Precz, precz od nas smutek wszelki}}
# {{sr|Prząśniczka}}
# {{sr|Przybieżeli do Betlejem}}
# {{sr|Przyjechał Jasieńko}}
# {{sr|Rota}}
# {{sr|Rześko, żwawo, stuku puku }}
# {{sr|Sadźmy, przyjacielu, róże}}
# {{sr|Serce nie sługa}}
# {{sr|Serdeczna Matko}}
# {{sr|Siedzi sobie zając pod miedzą}}
# {{sr|Słynie Gopło i Kruszwica }}
# {{sr|Spuśćcie nam na ziemskie niwy}}
# {{sr|Staropolskie zaloty}}
# {{sr|Szła dzieweczka}}
# {{sr|Szynkareczko, szafareczko}}
# {{sr|Śliczne gwoździki, piękne tulipany }}
# {{sr|Śnieżyca}}
# {{sr|Śród opok i jarów}}
# {{sr|Święta miłości kochanej ojczyzny}}
# {{sr|Świtezianka}}
# {{sr|Tam na błoniu błyszczy kwiecie}}
# {{sr|Ten mem zdaniem dobrze żyje}}
# {{sr|To są czary}}
# {{sr|Trzech Budrysów}}
# {{sr|Ty pójdziesz górą}}
# {{sr|Umarł Maciek, umarł}}
# {{sr|Upływa szybko życie}}
# {{sr|Użyjmy dziś żywota}}
# {{sr|W krwawem polu srebrne ptaszę}}
# {{sr|Veni Creator}}
# {{sr|W głos serdeczna dumka płynie }}
# {{sr|W murowanej piwnicy}}
# {{sr|W ogrodzie na wodzie}}
# {{sr|W okolicznem mieście}}
# {{sr|W polu}}
# {{sr|W polu lipeńka}}
# {{sr|W tył wyloty, w górę wąsy}}
# {{sr|W żłobie leży}}
# {{sr|Wesoło, bracia, wesoło}}
# {{sr|Wesoło żeglujmy, wesoło}}
# {{sr|Wesoły nam dziś dzień nastał}}
# {{sr|Wezmę ja skrzypki}}
# {{sr|Witaj gwiazdko złota}}
# {{sr|Witaj majowa jutrzenko}}
# {{sr|Wojenko, wojenko}}
# {{sr|Wszystkich dziś ciekawość budzi}}
# {{sr|Za Niemen het precz}}
# {{sr|Zajączek}}
# {{sr|Zdrowaś bądź Maryja}}
# {{sr|Zielony dzban}}
# {{sr|Zła zima}}
# {{sr|Znaszli ten kraj}}
# {{sr|Żal, żal za jedyną}}
# {{sr|Życzenie}}
# {{sr|Дзюба}}
# {{sr|Їхав козак за Дунай}}
# {{sr|Ще не вмерла України і слава, і воля}}
}}
== Materiały dodatkowe ==
* {{sr|Bibliografia}}
* {{sr|Indeks tematyczny}}
htqwk41r2i5ipce6azpkuf8saulw8o9
Moduł:StronicowyParser/ZbieranieDanychStron
828
55009
542677
542343
2026-05-12T03:17:31Z
Persino
2851
542677
Scribunto
text/plain
local p={};
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true);
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwa_przestrzeni or nazwy_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or nazwy_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or nazwy_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or nazwy_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
end;
end;
function p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
else
p.LinkowanieFinalizowaniePrac(self,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych={};
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych);
if(tabela_listy_danych_analizy_ksiazki0)then
if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki0,})then return;end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in pairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron","Link"..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron","Link"..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
end;
end;
if(not czy_link)then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(
(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])
or(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])
)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowSzablonuISzablonu);
end;
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka], nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy});
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
end;
return self.tabela_listy_danych_analizy_ksiazki;
end;
return p;
d18sa2mh5efj6am61atpffs1xq0euc8
Moduł:Książkowe
828
56418
542672
541362
2026-05-11T22:19:30Z
Persino
2851
542672
Scribunto
text/plain
local p={};
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)
if((tabela_nazw)and(tabela_nazw.namespace)and(tabela_nazw.pagename))then
local nazwy_modul=require("Module:Nazwy");
return nazwy_modul[funkcja_nazw](nil,tabela_nazw);
end;
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local pelna_nazwa_strony=PobierzParametr("nazwa") or PobierzParametr(1);
local bez_transformacji=PobierzParametr("bez transformacji");
local funkcja=PobierzParametr("funkcja");
local funkcja_decode=PobierzParametr("funkcja decode");
local modul=PobierzParametr("moduł");
local modul_decode=PobierzParametr("moduł decode");
funkcja=parametry_modul.CzyTak(funkcja) and funkcja or "";
funkcja_decode=parametry_modul.CzyTak(funkcja_decode) and funkcja_decode or "DecodeHtml";
modul=parametry_modul.CzyTak(modul) and modul or "Książkowe";
modul_decode=parametry_modul.CzyTak(modul_decode) and modul_decode or "Html";
local czy_bez_transformacji=parametry_modul.CzyTak(bez_transformacji);
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
local uzyskana_nazwa_jednostki=
pelna_nazwa_strony
and (czy_bez_transformacji
and nazwy_modul[funkcja_nazw](pelna_nazwa_strony,tabela_nazw)
or nazwy_modul[funkcja_nazw](require("Module:"..modul)[funkcja](require("Module:"..modul_decode)[funkcja_decode](pelna_nazwa_strony,true)),tabela_nazw)
)
or (czy_bez_transformacji
and nazwy_modul[funkcja_nazw](nil,tabela_nazw)
or require("Module:"..modul)[funkcja](require("Module:"..modul_decode)[funkcja_decode](nazwy_modul[funkcja_nazw](nil,tabela_nazw),true))
);
return uzyskana_nazwa_jednostki;
end;
----
p[""]=function(parametr)
return parametr;
end;
p.NazwaPrzestrzeni = function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
p["NazwaPrzestrzeniKsiążki"] = function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
p["NazwaTytułuKsiążki"] = function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
----
p["NazwaKsiążki"] = function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
p["PełnaNazwaKsiążki"] = function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
p["PełnaNazwaArtykułu"] = function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
p["NazwaArtykułu"] = function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
p["PełnaNazwaStronicowejKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
if((tabela_nazw)and(tabela_nazw.namespace)and(tabela_nazw.pagename))then
local nazwy_modul=require("Module:Nazwy");
return nazwy_modul["PEŁNANAZWAKSIĄŻKI"](nil,tabela_nazw);
end;
---
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local niepelna_nazwa_strony=PobierzParametr("nazwa") or PobierzParametr(1);
local bez_transformacji=PobierzParametr("bez transformacji");
local funkcja=PobierzParametr("funkcja");
local funkcja_decode=PobierzParametr("funkcja decode");
local modul=PobierzParametr("moduł");
local modul_decode=PobierzParametr("moduł decode");
funkcja=parametry_modul.CzyTak(funkcja) and funkcja or "";
funkcja_decode=parametry_modul.CzyTak(funkcja_decode) and funkcja_decode or "DecodeHtml";
modul=parametry_modul.CzyTak(modul) and modul or "Książkowe";
modul_decode=parametry_modul.CzyTak(modul_decode) and modul_decode or "Html";
niepelna_nazwa_strony=niepelna_nazwa_strony and ((not bez_transformacji) and require("Module:"..modul)[funkcja](require("Module:"..modul_decode)[funkcja_decode](niepelna_nazwa_strony,true)) or niepelna_nazwa_strony) or nil;
local function Parametr(strona)
return{
["nazwa"]=strona,
["bez transformacji"]=bez_transformacji,
["funkcja"]=funkcja,
["funkcja decode"]=funkcja_decode,
["moduł"]=modul,
["moduł decode"]=modul_decode,
};
end;
if(not niepelna_nazwa_strony)then
local nazwy_modul=require("Module:Nazwy");
return (not bez_transformacji) and p["PełnaNazwaKsiążki"](Parametr(niepelna_nazwa_strony),tabela_nazw) or nazwy_modul["PEŁNANAZWAKSIĄŻKI"](niepelna_nazwa_strony,tabela_nazw);
elseif(niepelna_nazwa_strony=="")then
local nazwy_modul=require("Module:Nazwy");
return nazwy_modul["PEŁNANAZWAKSIĄŻKI"](niepelna_nazwa_strony,tabela_nazw);
end;
local dwukropek=mw.ustring.match(niepelna_nazwa_strony,"^:");
if(dwukropek)then
local nazwy_modul=require("Module:Nazwy");
return nazwy_modul["PEŁNANAZWAKSIĄŻKI"](niepelna_nazwa_strony,tabela_nazw);
else
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](niepelna_nazwa_strony);
local czy_niepelna_nazwa_strony_z_przestrzenia=(nazwa_przestrzeni~="");
if czy_niepelna_nazwa_strony_z_przestrzenia then
return nazwy_modul["PEŁNANAZWAKSIĄŻKI"](niepelna_nazwa_strony,tabela_nazw);
else
local title_main=mw.title.makeTitle('',niepelna_nazwa_strony);
if((title_main)and(title_main.exists))then
return nazwy_modul["NAZWAKSIĄŻKI"](niepelna_nazwa_strony,tabela_nazw);
else
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local title_wikijunior=mw.title.makeTitle(nazwy_np_modul.Wikijunior,niepelna_nazwa_strony);
if((title_wikijunior)and(title_wikijunior.exists))then
return nazwy_modul["PEŁNANAZWAKSIĄŻKI"](((nazwy_np_modul.Wikijunior~="") and nazwy_np_modul.Wikijunior..":" or "")..niepelna_nazwa_strony,tabela_nazw);
else
local tabela_nazw2={};
local nazwa_przestrzeni=(not bez_transformacji) and p["NazwaPrzestrzeni"](Parametr(),tabela_nazw2) or nazwy_modul["NAZWAPRZESTRZENI"](nil,tabela_nazw2);
local nazwa_przestrzeni_ksiazki=(not bez_transformacji) and p["NazwaPrzestrzeniKsiążki"](Parametr(),tabela_nazw2) or nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](nil,tabela_nazw2);
local pelna_nazwa_strony=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")
..nazwa_przestrzeni_ksiazki
..((niepelna_nazwa_strony~="")and(((nazwa_przestrzeni_ksiazki~="") and "/" or "")..niepelna_nazwa_strony) or "");
return nazwy_modul["PEŁNANAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw);
end;
end;
end;
end;
end;
return p;
s7s9e00eaykgexwevgxthmev0br7xy6
Moduł:Html
828
56560
542690
540228
2026-05-12T08:28:16Z
Persino
2851
542690
Scribunto
text/plain
local p={};
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)
local szeregi_modul=require("Module:Szeregi");
wzor=wzor or "&([^&;%s]+);"
html=szeregi_modul.SzeregiOmijanieFunkcyjne(html,normalnie,wzor,funkcja,
function(kod)
return "&"..kod..";";
end);
return html;
end;
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
tekst=mw.ustring.gsub(tekst,"([%|%[%]%(%)%+%-%*%?%.%^%$%%'])",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
return tekst;
end;
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
tekst=mw.ustring.gsub(tekst,"&#(%d+);",function (s) return tostring(mw.ustring.char(s));end);
tekst=mw.ustring.gsub(tekst,"&#x(%x+);", function(n) return mw.ustring.char(tonumber(n, 16));end);
return tekst;
end;
function p.ZnakiSpecjalneTaguNowiki(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([%!{}|=<>%[%]])",tab_nawiasy);
return tekst;
end;
function p.ZnakiSpecjalneWikiLinku(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([{}|<>%[%]])",tab_nawiasy);
return tekst;
end;
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local html=PobierzParametryRamki("html");
local __normalnie=PobierzParametryRamki("normalnie");
normalnie=parametry_modul.CzyTak(__normalnie) or normalnie;
---
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
local wzor_kody="([{}|<>%[%]#=%?&])";
html=p.KodowanieOmijanieFunkcyjne(html,normalnie,nil,function(ciag)
ciag=mw.ustring.gsub(ciag,wzor_kody,tab_nawiasy);
return ciag;
end);
return html;
end;
function p.EncodeZnakProloguList(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
local lista_znaki="%#%*%;%:";
tekst=mw.ustring.gsub(tekst,"^\n?(["..lista_znaki.."])",tab_nawiasy);
tekst=mw.ustring.gsub(tekst,"\n(["..lista_znaki.."])",function(znak)
return "\n"..(tab_nawiasy[znak] or znak);
end);
return tekst;
end;
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local tekst=PobierzParametryRamki("tekst");
local __normalnie=PobierzParametryRamki("normalnie");
normalnie=parametry_modul.CzyTak(__normalnie) or normalnie;
---
local html_dane_modul=mw.loadData("Module:Html/dane");
local tabela_nawiasowa=html_dane_modul.tabela_nawiasowa;
tekst=p.KodowanieOmijanieFunkcyjne(tekst,normalnie,nil,function(ciag)
ciag=mw.ustring.gsub(ciag,"([=%?&])",tabela_nawiasowa);
return ciag;
end);
return tekst;
end;
function p.PrzypisanieZnakoweEncodeHtml(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tabela_nawiasowa=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([=])",tabela_nawiasowa);
return tekst;
end;
function p.ZamianaDwukropkaNaKodHtml(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tabela_nawiasowa=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([:])",tabela_nawiasowa);
return tekst;
end;
function p.KodHTMLZnaku(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local znak=PobierzParametr(1);
if(not parametry_modul.CzyTak(znak))then return "(błąd)";end;
local czy_kod_znaku=PobierzParametr(2);
local czy_tak=parametry_modul["CzyTakCiąg"](czy_kod_znaku);
local ZnakFun=function(znak)
if(#znak>1)then
return mw.ustring.codepoint(znak);
else
return mw.ustring.byte(znak);
end;
end;
if(czy_tak)then
return "&#"..tostring(ZnakFun(znak))..";";
else
return "&#"..tostring(ZnakFun(znak))..";";
end;
end;
p["KodyHTMLZnakówWikiCiągu"] = function (frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local ciag_znakow=PobierzParametr(1);
if(not parametry_modul.CzyTak(ciag_znakow))then return "(błąd)";end;
local czy_kod_znaku=PobierzParametr(2);
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_znakowo_kodowa={};
local tabela_znakowa=html_dane_modul.tabela_znakowa;
local ciag,_=mw.ustring.gsub(ciag_znakow,"(.)",function(znak)
if(tabela_znakowa[znak])then
if(not czy_kod_znaku)then
return "&#"..tabela_znakowa[znak]..";";
else
return "&#"..tabela_znakowa[znak]..";";
end;
end;
return nil;
end);
return ciag;
end;
function p.EncodeId(id,bez_transformacji)
id=(not bez_transformacji) and p.DecodeHtml(id,true) or id;
local id=p.EncodeSpecjalneZnakiHtml(id,true);
return id;
end;
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)
parametr=mw.ustring.gsub(parametr,"","");
return parametr;
end;
function p.EncodeWiki(parametr,czy_nie_odstepy)
parametr=p["TransformacjaKoduHtmlDoZnakuCiągu"](parametr);
parametr=p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr);
local parametry_modul=require("Module:Parametry");
if(not czy_nie_odstepy)then
parametr=parametry_modul["Odstępy"]{[1]=parametr,[2]="tak",[3]="tak",};
end;
parametr=mw.text.encode(parametr);
return parametr;
end;
function p.DecodeWiki(parametr,czy_nie_odstepy)
parametr=mw.text.decode(parametr);
parametr=p["TransformacjaKoduHtmlDoZnakuCiągu"](parametr);
parametr=p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr);
if(not czy_nie_odstepy)then
local parametry_modul=require("Module:Parametry");
parametr=parametry_modul["Odstępy"]{[1]=parametr,[2]="tak",};
end;
return parametr;
end;
function p.IsEncodedHtml(parametr,encode,encode_real)
local parametry_modul=require("Module:Parametry");
local spr_parametr_szereg=nil;
local TempFunParametr=function(parametr)
if(parametry_modul.TypeNil(spr_parametr_szereg))then
local __spr_parametr_szereg=mw.ustring.match(parametr,"^[%w%p%s]*$");
spr_parametr_szereg=__spr_parametr_szereg and true or false;
return spr_parametr_szereg;
end;
return spr_parametr_szereg;
end;
local spr_parametr_bez_procentu=nil;
local TempFunBezProcentu=function(parametr)
if(parametry_modul.TypeNil(spr_parametr_bez_procentu))then
local __spr_parametr_bez_procentu=mw.ustring.match(parametr,"^[^%%]*$");
spr_parametr_bez_procentu=__spr_parametr_bez_procentu and true or false;
return spr_parametr_bez_procentu;
end;
return spr_parametr_bez_procentu;
end;
local wynik=((encode_real)and(TempFunParametr(parametr)and(TempFunBezProcentu(parametr))))
or((encode)and(TempFunBezProcentu(parametr)))
or(((not encode_real)or((encode_real)and(TempFunParametr(parametr))))
and(mw.ustring.match(parametr,"%%%x%x"))
and(not mw.ustring.match(parametr,"%%$"))
and(not mw.ustring.match(parametr,"%%.$"))
and(not mw.ustring.match(parametr,"%%[^%x]."))
and(not mw.ustring.match(parametr,"%%.[^%x]")));
return wynik and true or false;
end;
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)
if(not parametr)then return;end;
if(p.IsEncodedHtml(parametr,encode,encode_real))then
return p.EncodeWiki(parametr,czy_nie_odstepy);
end;
return mw.uri.encode(parametr,"WIKI");
end;
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)
if(not parametr)then return;end;
if(p.IsEncodedHtml(parametr,encode,encode_real))then
if(spacje)then
return p.DecodeWiki(mw.uri.decode(parametr,"WIKI"));
else
return p.EncodeWiki(mw.uri.decode(parametr,"WIKI"));
end;
end;
if(spacje)then
return p.DecodeWiki(parametr,czy_nie_odstepy);
else
return p.EncodeWiki(parametr,czy_nie_odstepy);
end;
end;
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)
znacznik=mw.ustring.gsub(znacznik,"([\"'])(.-[^\\])(%1)",function(cudzyslow_otwierajacy,atrybut,cudzyslow_zamykajacy)
local ile1=0;local ile2;
atrybut=p.KodowanieOmijanieFunkcyjne(atrybut,true,nil,function(atrybut)
local __ile1;
atrybut,__ile1=mw.ustring.gsub(atrybut,"([<>&])",function(a)
return mw.text.encode(a);
end);
ile1=ile1+__ile1;
return atrybut;
end);
atrybut,ile2=mw.ustring.gsub(atrybut,"(\\\")",function(a)
return p["KodyHTMLZnakówWikiCiągu"](a);
end);
if(ile1+ile2>0)then
return cudzyslow_otwierajacy..atrybut..cudzyslow_zamykajacy;
end;
return nil;
end);
return znacznik;
end;
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)
value=mw.ustring.gsub(value,"(&)(%a+)(;)",function(amp,kod_html,srednik)
kod_html=mw.ustring.lower(kod_html);
if((kod_html=="lt")or(kod_html=="gt")or(kod_html=="amp"))then
return mw.text.decode(amp..kod_html..srednik);
end;
return nil;
end);
local lewy_ukosnik=mw.ustring.byte("\\");
local cudzyslow=mw.ustring.byte("\"");
value=mw.ustring.gsub(value,"(&#"..lewy_ukosnik..";&#"..cudzyslow..";)","\\\"");
return value;
end;
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_nie_dolne_myslniki=PobierzParametr("z nie dolnymi z myślnikami") or PobierzParametr(2) or czy_nie_dolne_myslniki;
czy_nie_dolne_myslniki=parametry_modul.CzyTak(czy_nie_dolne_myslniki);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.nazwa_jednostki or p.DecodeHtml(nazwa_jednostki,true);
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.nazwa_jednostki))then tabela_nazw_adresu.nazwa_jednostki=nazwa_jednostki;end;
local naglowek=czy_nie_dolne_myslniki and mw.ustring.match(nazwa_jednostki,"^[^#]*#[%s_]*(.-)[%s_]*$") or mw.ustring.match(nazwa_jednostki,"^[^#]*#(.-)%s*$");
naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",[3]=((not czy_nie_dolne_myslniki)and "tak" or nil),};
return naglowek;
end;
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.nazwa_jednostki or p.DecodeHtml(nazwa_jednostki,true);
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.nazwa_jednostki))then tabela_nazw_adresu.nazwa_jednostki=nazwa_jednostki;end;
if(czy_naprawiaj)then
local bez_naglowka=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^[%s_]*([^#]-)[%s_]*#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=bez_naglowka;end;
local parametry=mw.ustring.match(bez_naglowka,"^.-%?*%?[%s_]*([^&]+=[^&]-.-)[%s_]*$");
if(parametry)then
parametry=mw.ustring.gsub(parametry,"[%s_]*=[%s_]*","=") or nil;
parametry=mw.ustring.gsub(parametry,"[%s_]*&[%s_]*","&") or nil;
end;
return parametry;
else
local bez_naglowka=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^([^#]-)#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=bez_naglowka;end;
local parametry=mw.ustring.match(bez_naglowka,"^.-%?*%?([^&]+=[^&]-.-)%s*$");
return parametry;
end;
end;
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.nazwa_jednostki or p.DecodeHtml(nazwa_jednostki,true);
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.nazwa_jednostki))then tabela_nazw_adresu.nazwa_jednostki=nazwa_jednostki;end;
if(czy_naprawiaj)then
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^[%s_]*([^#]-)[%s_]*#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=nazwa_jednostki;end;
nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.-%?*)[%s_]*%?[^&]+=[^&]*.*$","%1");
else
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^([^#]-)#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=nazwa_jednostki;end;
nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.-%?*)%?[^&]+=[^&]*.*$","%1");
end;
local strony_modul=require("Module:Strony");
local czy_url=strony_modul.SprawdzanieURL(nazwa_jednostki);
czy_url=czy_url and true or (not czy_naprawiaj);
nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",[3]=czy_url and true or false,};
return nazwa_jednostki;
end;
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local parametry_strony=PobierzParametr("parametry") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
if(parametry_modul.CzyTak(parametry_strony))then
local nazwa_strony_linku;
if(czy_naprawiaj)then
if(mw.ustring.match(parametry_strony,"^[%s_]*title[%s_]*=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"^[%s_]*title[%s_]*=([^&]+)&?.*$");
parametry_strony=mw.ustring.gsub(parametry_strony,"^[%s_]*title[%s_]*=([^&]+)&?","");
elseif(mw.ustring.match(parametry_strony,"&[%s_]*title[%s_]*=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"&[%s_]*title[%s_]*=([^&]+)&?.*$");
parametry_strony=mw.ustring.gsub(parametry_strony,"&[%s_]*title[%s_]*=([^&]+).*$","");
end;
else
if(mw.ustring.match(parametry_strony,"^title=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"^title=([^&]+)&?.*$");
parametry_strony=mw.ustring.gsub(parametry_strony,"^title=([^&]+)&?","");
elseif(mw.ustring.match(parametry_strony,"&title=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"&title=([^&]+)&?.*$");
parametry_strony=mw.ustring.gsub(parametry_strony,"&title=([^&]+).*$","");
end;
end;
nazwa_strony_linku=parametry_modul["Odstępy"]{[1]=nazwa_strony_linku,[2]="tak",[3]=(not czy_naprawiaj),};
return nazwa_strony_linku,parametry_strony;
else
return nil;
end;
end;
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
local tabela_nazw_adresu=tabela_nazw_adresu or {};
local adres=p["NazwaStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil,tabela_nazw_adresu);
local parametry_strony=p["ParametryStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil,tabela_nazw_adresu);
local naglowek_strony=p["NagłówekStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil,tabela_nazw_adresu);
nazwa_jednostki=adres..(parametry_strony and ("?"..parametry_strony) or "")..(naglowek_strony and ("#"..naglowek_strony) or "");
return nazwa_jednostki;
end;
function p.URLStrona(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
local z_ukosnikiem=parametry_modul.CzyTak(PobierzParametr("ukośnik") or PobierzParametr(2));
local serwer,nazwa=mw.ustring.match(url,"^//+([^%s/]+)"..((z_ukosnikiem) and "/+" or "").."(/?.-)$");
return serwer,nazwa;
end;
p["UrlBezProtokołu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
local mail=mw.ustring.match(url,"^.*@([^@]+)$");
if(mail)then
return "//"..mail,"mail",1;
end;
local protokol,strona=mw.ustring.match(url,"^(%a+:)(/+.-)$");
if((protokol)and(strona))then
strona=mw.ustring.gsub(strona,"^(/+)","//");
return strona,protokol,2;
end;
local strona=mw.ustring.match(url,"^:?(/+.-)$");
if(strona)then
strona=mw.ustring.gsub(strona,"^(/+)","//");
return strona,nil,3;
end;
return "//"..url,nil,-1;
end;
function p.DecodeKoduHTMLZnaku(tekst)
local html_dane_modul=mw.loadData("Module:Html/dane");
local kody_literowe_html_i_ich_odpowiedniki_znakowe=html_dane_modul.kody_literowe_html_i_ich_odpowiedniki_znakowe;
-- najpierw nazwane encje
local ile1;
tekst,ile1 = mw.ustring.gsub(tekst,"(&%a+%;)", kody_literowe_html_i_ich_odpowiedniki_znakowe);
-- encje numeryczne dziesiętne: μ
local ile2;
tekst,ile2=mw.ustring.gsub(tekst,"&#(%d+);", function(n)
return mw.ustring.char(tonumber(n))
end);
-- encje numeryczne szesnastkowe: μ
local ile3;
tekst,ile3 = mw.ustring.gsub(tekst,"&#x(%x+);", function(n)
return mw.ustring.char(tonumber(n, 16))
end);
return tekst,ile1,ile2,ile3;
end;
function p.ZamianaEncodeTekst(tekst)
tekst=mw.uri.encode(mw.uri.decode(tekst,"PATH"),"PATH");
return tekst;
end;
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)
tekst=mw.ustring.gsub(tekst,wzor,function(tekst)
tekst=p.ZamianaEncodeTekst(tekst);
return tekst;
end);
return tekst;
end;
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)
local ile_w;local ile;
adres,ile_w,ile=p.EncodeHashKoduHtmlTekstu(adres);
local ile1;local ile2;
if(ile_w>0)then
adres,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(adres);
end;
local strona,naglowek=mw.ustring.match(adres,"^[%s_]*([^#]-)[%s_]*#[%s_]*(.-)[%s_]*$");
if((not strona)or(not naglowek))then
strona=mw.ustring.match(adres,"^[%s_]*(.-)[%s_]*$");
end;
local __strona,parametry=mw.ustring.match(strona,"^(.-%?*)%?([^&=]-=.*)$");
strona=__strona or strona;
if(ile_w>0)then
strona=p.DecodeHashKoduHtmlTekstu(p.DecodeTempHashKoduHtmlTekstu(strona,ile1,ile2),ile);
parametry=parametry and p.DecodeHashKoduHtmlTekstu(p.DecodeTempHashKoduHtmlTekstu(parametry,ile1,ile2),ile) or nil;
naglowek=naglowek and p.DecodeHashKoduHtmlTekstu(p.DecodeTempHashKoduHtmlTekstu(naglowek,ile1,ile2),ile) or nil;
end;
return strona,parametry,naglowek;
end;
function p.TworzenieAdresuHtml(strona,parametry,naglowek)
local adres=strona..(parametry and ("?"..parametry) or "")..((naglowek)and ("#"..naglowek) or "");
return adres;
end;
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)
local strona,parametry,naglowek=p.StronaParametryIdentyfikacjaAdresuHtml(adres);
strona=funkcja_strona and funkcja_strona(strona) or strona;
parametry=(parametry and funkcja_parametry) and funkcja_parametry(parametry) or parametry;
naglowek=(naglowek and funkcja_naglowek) and funkcja_naglowek(naglowek) or naglowek;
local adres=p.TworzenieAdresuHtml(strona,parametry,naglowek);
return adres;
end;
function p.ParametryEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)
local function ParametryEncodeURL(a,b,c)
return a..p.ZamianaEncodeTekst(b).."="..p.ZamianaEncodeTekst(c);
end;
local function OperacjeHtml(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryEncodeURL);
return adres;
end;
if(not w_adresie)then
return OperacjeHtml(adres);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,OperacjeHtml,funkcja_naglowek);
end;
end;
function p.ParametryZaawansowanyEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)
function ParametryZaawansowanyEncodeURL(a,b,c)
b=mw.uri.decode(b,"PATH");b=p.EncodeSpecjalneZnakiHtml(b,true);b=mw.uri.encode(b,"PATH");
c=mw.uri.decode(c,"PATH");c=p.EncodeSpecjalneZnakiHtml(c,true);c=mw.uri.encode(c,"PATH");
return a..(b.."="..c);
end;
local function OperacjeURL(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryZaawansowanyEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryZaawansowanyEncodeURL);
return adres;
end;
if(not w_adresie)then
return OperacjeURL(adres);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,OperacjeURL,funkcja_naglowek);
end;
end;
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)
local EncodeHtmlAB=function(a,b,c)
b=p.EncodeHtml(b);c=p.EncodeHtml(c);
return a..b.."="..c;
end;
local function ParametryHtml(parametr)
parametr=mw.ustring.gsub(parametr,"^(%??)([^&=]*)=([^&]*)",EncodeHtmlAB);
parametr=mw.ustring.gsub(parametr,"(&)([^&=]*)=([^&]*)",EncodeHtmlAB);
return parametr;
end;
if(not w_adresie)then
return ParametryHtml(parametr);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(parametr,funkcja_strona,ParametryHtml,funkcja_naglowek);
end;
end;
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)
local KrokEncodeZaawansowanyParametryHtmlABC=function(a)
a=mw.uri.decode(a,"PATH");
a=p.EncodePodstawoweHtmlTekstu(a);
if(z_kodowaniem)then a=mw.uri.encode(a,"PATH");end;
return a;
end;
local EncodeZaawansowanyParametryHtmlABC=function(a,b,c)
b=KrokEncodeZaawansowanyParametryHtmlABC(b);
c=KrokEncodeZaawansowanyParametryHtmlABC(c);
return (a or "")..(b.."="..c);
end;
local function OperacjeParametryHtmlABC(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]-)=([^&]*)",EncodeZaawansowanyParametryHtmlABC);
adres=mw.ustring.gsub(adres,"([&])([^&=]-)=([^&]*)",EncodeZaawansowanyParametryHtmlABC);
return adres;
end;
if(not w_adresie)then
return OperacjeParametryHtmlABC(adres);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,OperacjeParametryHtmlABC,funkcja_naglowek);
end;
end;
function p.EncodeHashKoduHtmlTekstu(tekst)
local ile;local ile2=0;
tekst,ile=mw.ustring.gsub(tekst,"&([^&;%s]+);",function(kod)
if((kod=="num")or(kod=="#35")or(kod=="#x23"))then
ile2=ile2+1;
return "&num;";
end;
return nil;
end);
return tekst,ile,ile2;
end;
function p.DecodeHashKoduHtmlTekstu(tekst,ile)
if(((ile)and(ile>0))or(not ile))then
tekst=mw.ustring.gsub(tekst,"&num;",function(kod)
return "#";
end);
end;
return tekst;
end;
function p.EncodeTempHashKoduHtmlTekstu(tekst)
local ile1;local ile2;
tekst,ile1=mw.ustring.gsub(tekst,"&#(%d+);",function(kod)
return "&#"..kod..";";
end);
tekst,ile2=mw.ustring.gsub(tekst,"&#x(%x+);",function(kod)
return "&#x"..kod..";";
end);
return tekst,ile1,ile2;
end;
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)
if(((ile1)and(ile1>0))or(not ile1))then
tekst=mw.ustring.gsub(tekst,"&#(%d+);",function(kod)
return "&#"..kod..";"
end);
end;
if(((ile2)and(ile2>0))or(not ile2))then
tekst=mw.ustring.gsub(tekst,"&#x(%x+);",function(kod)
return "&#x"..kod..";"
end);
end;
return tekst;
end;
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)
local adres=p.ParametryEncodeURL(adres,true,
function(strona)
local function Func(strona)
strona=p.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end;
if(protokolarny)then
local adres,protokol=p["UrlBezProtokołu"](strona);
adres=Func(adres);
adres=(protokol or "")..adres;
return adres;
else
return Func(strona);
end;
end,
function(naglowek)
naglowek=p.ZamianaEncodeTekst(naglowek);
return naglowek;
end);
return adres;
end;
function p.UriEncode(frame)
local parametry_modul=require("Module:Parametry");
local html=parametry_modul.PobierzParametryRamki(frame)("html");
html=mw.ustring.gsub(html,"^(%a+://)(.+)$",function(prot,strona)
return prot..p.AdresDomniemanieBezProtokolarnyEncodeURL(strona,false);
end);
return html;
end;
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)
elementy_adresu_strony=p.KodowanieOmijanieFunkcyjne(elementy_adresu_strony,true,"&(#35);",function(elementy_adresu_strony)
elementy_adresu_strony=p.DecodeKoduHTMLZnaku(elementy_adresu_strony);
return elementy_adresu_strony;
end);
elementy_adresu_strony=p.EncodeSpecjalneZnakiHtml(elementy_adresu_strony,true);
return elementy_adresu_strony;
end;
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)
if(czy_parametry_strony)then
elementy_adresu_strony=p.EncodeZaawansowanyParametryHtml(elementy_adresu_strony,z_kodowaniem);
else
elementy_adresu_strony=mw.uri.decode(elementy_adresu_strony,"PATH");
elementy_adresu_strony=p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony);
if(z_kodowaniem)then elementy_adresu_strony=mw.uri.encode(elementy_adresu_strony,"PATH");end;
end;
return elementy_adresu_strony;
end;
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)
local parametry_modul=require("Module:Parametry")
local PobierzParametry=parametry_modul.PobierzParametryRamki(frame);
local html=PobierzParametry("html");
local z_kodowaniem_html=PobierzParametry("encode");
if(z_kodowaniem_html)then z_kodowaniem=parametry_modul.CzyTak(z_kodowaniem_html);end;
local html=p.EncodeZaawansowanyParametryHtml(html,z_kodowaniem,true,
function(strona)
local function Func(strona)
strona=p.EncodePodstawoweHtmlTekstu(mw.uri.decode(strona,"PATH"));
if(z_kodowaniem)then strona=mw.uri.encode(strona,"PATH");end;
return strona;
end;
if(protokolarny)then
local adres,protokol=p["UrlBezProtokołu"](strona);
adres=mw.ustring.gsub(adres,"[^/]+",function(element)
element=Func(element);
return element;
end);
adres=(protokol or "")..adres;
return adres;
else
return Func(strona);
end;
end,
function(naglowek)
naglowek=p.EncodePodstawoweHtmlTekstu(mw.uri.decode(naglowek,"PATH"));
if(z_kodowaniem)then naglowek=mw.uri.encode(naglowek,"PATH") end;
return naglowek;
end);
return html;
end;
return p;
99566or7k592iujmrpf5iclallg9zin
Moduł:StronicowyParser/Rozdziały
828
58234
542702
535798
2026-05-12T11:57:24Z
Persino
2851
542702
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
naglowek="\n"..mw.ustring.rep("=",poziom)..rozdzial..mw.ustring.rep("=",poziom).."\n";
else
naglowek="\n<h6 class=\"mw-hnumber mw-hnumber-"+poziom+"\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawrtosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.*)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=mw.ustring.match(wiersz,"^(=+[^=]*[.=]*[^=]*=+)%s*$");
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local iter_h=mw.ustring.gmatch(tekst,"(<[Hh]%d+[^<>]*>.*</[Hh]%d+>)");
local techniczne_modul=require("Module:techniczne");
for wiersz_h in iter_h do
local wiersz_h_start=wiersz_h;
wiersz_h=mw.ustring.gsub(wiersz_h,"\n"," ");
wiersz_h="\n"..wiersz_h.."\n";
wiersz_h_start=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wiersz_h_start);
wiersz_h=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wiersz_h);
tekst=mw.ustring.gsub(tekst,wiersz_h_start,wiersz_h);
end;
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]*'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]*'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,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)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
return zawartosc or "",nil,true;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,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((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
qxoluf9az0e15fjnwxelvxvhr8juh18
Moduł:StronicowyParser/StronaSubst
828
58521
542701
529731
2026-05-12T11:57:20Z
Persino
2851
542701
Scribunto
text/plain
local p={};
function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun,NieFun,FunRozdzial,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local nazwy_modul=require("Module:Nazwy");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
if((pelnanazwastrony) or ((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu)))then
local args_nowe;
if(not pelnanazwastrony)then
args_nowe={
["nazwa przestrzeni nazw"]=nil,
["nazwa jednostki"]=nil,
};
else
args_nowe={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]=pelnanazwastrony,
};
end;
if((not tab_lista_artykulow_w_ksiazce_spis)or(pelnanazwastrony))then
stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu{args=args_nowe};
stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu({args=args_nowe},tabela_listy_danych_analizy_ksiazki);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni;local lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki;local tab_lista_artykulow_w_ksiazce;local tab_lista_zmiennych_w_artykule;
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu({args=args_nowe},tabela_listy_danych_analizy_ksiazki,false);
if(not tab_lista_artykulow_w_ksiazce_spis)then
--local blad_modul=require("Module:Błąd");
--return blad_modul.error{tag="span",tekst="Nie znalazłem takiej książki."};
return;
end;
local self_zmienna,tabela_listy_danych_analizy_ksiazki=stronicowyparser_potrzebne_modul:Self(tabela_listy_danych_analizy_ksiazki);
nazwa_przestrzeni=self_zmienna.nazwa_przestrzeni_podana;
nazwa_przestrzeni_ksiazki=self_zmienna.nazwa_przestrzeni_woluminu_podana;
nazwa_ksiazki=self_zmienna.nazwa_woluminu_podana;
nazwa_artykulu=self_zmienna.nazwa_podstrony_woluminu_podana;
else
nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
end;
else
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni;local lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki;local tab_lista_artykulow_w_ksiazce;local tab_lista_zmiennych_w_artykule;
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu({args={}},tabela_listy_danych_analizy_ksiazki,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not tab_lista_artykulow_w_ksiazce_spis)then
--local blad_modul=require("Module:Błąd");
--return blad_modul.error{tag="span",tekst="Nie znalazłem takiej książki."};
return;
end;
end;
local parametry_modul=require("Module:Parametry");
if(tab_lista_artykulow_w_ksiazce_spis)then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or((nazwa_przestrzeni==nazwy_np_modul.Wikibooks)and(mw.ustring.match(nazwa_przestrzeni_ksiazki,"^Brudnopis/([^/]+)$")))
or((nazwa_przestrzeni==nazwy_np_modul.User)and(mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))))then
-----
local tab_artykul={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)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(not tab_artykul[artykul_bez_naglowka_w_bazie])then
tab_artykul[artykul_bez_naglowka_w_bazie]=true;
end;
end;
end;
end;
--local ksiazka=mw.ustring.match(nazwa_ksiazki,"([^/]+)$");
if(
((nazwa_artykulu~="Wersja do druku")and(nazwa_ksiazki~=nazwa_artykulu))
and(tab_artykul[nazwa_artykulu])
)then
return NieFun(nil);
end;
-----
if((nazwa_artykulu~="Spis treści")and(nazwa_artykulu~="Bibliografia")and(nazwa_artykulu~="Licencja"))then
if((nazwa_ksiazki==nazwa_artykulu)or(nazwa_artykulu=="Wersja do druku"))then
return TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
else
local function StronaRozdzial()
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
if(rozdzial==nazwa_artykulu)then
return TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
return;
end;
if(not FunRozdzial)then
local val=StronaRozdzial();
if(val)then return val;end;
else
local val=FunRozdzial(tab_lista_artykulow_w_ksiazce_spis,nazwa_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not val)then return val;end;
end;
end;
end;
end;
end
return NieFun(nil);
end;
p.LiczOperacjeStronZbiorczych=function(glowna_tablica,tekst_rozwiniety_calego_artykulu,spis,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwy_modul=require("Module:Nazwy");
local toc_nowe={};
local tab_powtarzane={};
local function Powtarzane(rozdzial)
local b=1;
for i=1,#tab_powtarzane,1 do
if(tab_powtarzane[i]==rozdzial)then
b=b+1;
end;
end;
tab_powtarzane[#tab_powtarzane+1]=rozdzial;
return b;
end;
local function CzyStronaSubst()
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
end;
local function WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
szablon=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_strony,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(nazwa_szablonu=="StronaSubst")then return StronaSubst(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);end;
if(nazwa_szablonu=="KsiążkaSubst")then return KsiazkaSubst(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);end;
end);
end;
end;
end;
local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local str="<div style=\"display:block;\" class=\"rozdział_książki\">\n";
local parametry_modul=require("Module:Parametry");
local czy_link=parametry_modul.CzyTak(link);
local adres=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..strona
if(not czy_link)then
str=str..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(naglowek_strony,p);
else
local linki_modul=require("Module:Linki");
local str_link=linki_modul["Link wewnętrzny"]{
["strona"]=adres,
["nazwa"]=naglowek_strony,
};
str=str..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(str_link,p);
end;
if(postep)then
str=str.."<div class=\"postęp_ładowania_artykułu\"><div class=\"pasek_postępu\"></div> <span style=\"color:blue\">Ładuję artykuł...</span></div>";
end;
str=str.."<div class=\"strona_subst\" style=\"display:"..((not postep)and "block" or "none")..";\">"..((not czy_link) and (adres) or "").."</div>\n";
str=str.."</div>";
return str;
end;
local function ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(strona,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local nazwa_strony=strona[1];
local czy_table_strona=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(nazwa_strony);
local nazwa_strony_parametr=czy_table_strona and nazwa_strony[1] or nazwa_strony;
nazwa_strony=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(nazwa_strony_parametr,false);
-------
if((nazwa_strony~="Wersja do druku")and(nazwa_ksiazki~=nazwa_strony))then
local nazwa_strony_z_naglowkiem=naglowki and stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_strony_parametr,true) or nazwa_strony;
local tab_naglowek_strony=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(nazwa_strony_parametr,true);
local naglowek;
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_naglowek_strony))then
naglowek=parametry_modul["CzyTakCiąg"](tab_naglowek_strony[3]) and tab_naglowek_strony[3] or nil;
end;
if(not naglowki or not naglowek)then
naglowek=mw.ustring.match(nazwa_strony_z_naglowkiem,"/([^/]*)$") or nazwa_strony_z_naglowkiem;
end;
local liczba_powtarzanego=Powtarzane(naglowek);
if((naglowki or (not tablica_stron[nazwa_strony]))and(not sekcje))then
if(not naglowki)then
tablica_stron[nazwa_strony]=true;
end;
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},m_uzyskane,})
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(nazwa_strony_z_naglowkiem,naglowek,nil,m_uzyskane,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif((sekcje)and(not tablica_stron[nazwa_strony]))then
local specjalne_modul=require("Module:Specjalne");
local function SpisTOC(toc,licznik, element_w_tablicy)
local naglowek_rozdzialu=element_w_tablicy[1][2];
local numer_link_naglowek=Powtarzane(naglowek_rozdzialu);
local link=nazwa_strony.."#"..element_w_tablicy[1][1];
local poziom_rozdzialu=element_w_tablicy[2];
local poziom_rozdzialu_sekcji=HNumer(poziom_rozdzialu+m_roznica);
local id_naglowka,naglowek_rozdzialu=specjalne_modul["PrzetwórzNagłówek"](naglowek_rozdzialu,true,true);
table.insert(toc_nowe,{{id_naglowka..((numer_link_naglowek>1) and ("_"..numer_link_naglowek) or ""), naglowek_rozdzialu,}, poziom_rozdzialu_sekcji, })
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(link,naglowek_rozdzialu,nil,poziom_rozdzialu_sekcji,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},m_uzyskane,})
tablica_stron[nazwa_strony]=true;
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(nazwa_strony,naglowek,nil,m_uzyskane,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local nazwa_modulu=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..nazwa_strony;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,true);
if(tekst_rozwiniety_calego_artykulu)then
local szablonowe_modul=require("Module:Szablonowe");
local tablica_obiektow_strony_dany_modul_uzyskany;
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_dany_modul_uzyskany=szablonowe_modul:KodujWzoryMatematyczneTekstu(tekst_rozwiniety_calego_artykulu);
local tablica_obiektow_strony_danych_kodow_specjalnych_modul;
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
-----
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(nil,tekst_rozwiniety_calego_artykulu,nazwa_modulu,false,true,nil,nil,nil,nil,nil,nil,tablica_obiektow_strony_dany_modul_uzyskany,nil,tablica_obiektow_strony_danych_kodow_specjalnych_modul,nil,true);
if(toc)then
local nazwa_strony_naglowka=toc.nazwa_strony;
for licznik, element_w_tablicy in ipairs(toc)do
SpisTOC(toc,licznik, element_w_tablicy);
end;
end;
end;
end;
end;
return tablica_stron,wikikod,toc_nowe;
end;
local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,licznik_rozdzial_centrowany,licznik_rozdzial_dodatni,licznik_rozdzial_srednikowy,licznik_rozdzial_zerowy)
local m=tab_lista[1][2][1] or 0;
local czy_centrowany=false;
local czy_srednikowy=false;
if(m>0)then
local czy_centrowany=tab_lista[1][2][4] or false;
if(czy_centrowany)then
licznik_rozdzial_dodatni=0;
licznik_rozdzial_zerowy=0;
licznik_rozdzial_centrowany=2;
licznik_rozdzial_srednikowy=0;
czy_centrowany=true;
else
licznik_rozdzial_dodatni=m;
licznik_rozdzial_zerowy=0;
licznik_rozdzial_srednikowy=0;
end;
elseif(m==0)then
licznik_zerowy_rozdzial=1;
else
local przedrostek_listy=tab_lista[1][2][2];
if(przedrostek_listy)then
if(mw.ustring.match(przedrostek_listy,"^;+"))then
licznik_rozdzial_srednikowy=math.abs(m);
licznik_rozdzial_zerowy=0;
czy_srednikowy=true;
end;
end;
end;
m=(((not czy_centrowany)and(not czy_srednikowy))and(math.abs(m)) or 0)+((m<=0) and (licznik_rozdzial_dodatni+licznik_rozdzial_srednikowy+licznik_rozdzial_zerowy) or 0)+licznik_rozdzial_centrowany;
return m;
end;
local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,strona,liczba_stron_zerowych,liczba_stron_srednikowych)
local czy_srednikowy=false;
local roznica=(strona[2][1]>0)and strona[2][1] or 0;
if(roznica==0)then
liczba_stron_zerowych=1;
elseif(roznica>0)then
local przedrostek_listy=strona[2][2];
if(przedrostek_listy)then
if(mw.ustring.match(przedrostek_listy,"^;+"))then
liczba_stron_zerowych=0;
liczba_stron_srednikowych=roznica;
czy_srednikowy=true;
end;
end;
end;
local m_roznica=m+((not czy_srednikowy) and roznica or 0)+liczba_stron_zerowych+liczba_stron_srednikowych;
return m_roznica;
end;
local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(tab_lista[2])then
local liczba_stron_zerowych=0;
local liczba_stron_srednikowych=0;
for _,strona in ipairs(tab_lista[2])do
local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,strona,liczba_stron_zerowych,liczba_stron_srednikowych);
local m_uzyskane=HNumer(m_roznica);
--local PobierzParametr=parametry_modul.PobierzParametr(strona[1]);
--local nazwa_strony_parametr=PobierzParametr(1);
--local nazwa_strony,_=mw.ustring.gsub(nazwa_strony_parametr,"^([^#]*)(#.*)$","%1");
----
tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(strona,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
----
end;
end;
return tablica_stron,wikikod,toc_nowe;
end;
local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local strona=tabela_parametrow_szablonu[1];
local link=tabela_parametrow_szablonu["link"];
local parametry_modul=require("Module:Parametry");
strona=parametry_modul["Odstępy"]{nazwa=strona,["wewnątrz"]="tak",};
local czy_link=parametry_modul.CzyTak(link);
if(czy_artykul_aktualny)then
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"]={};
end;
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona]={};
end;
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki]={};
end;
local tablica_nazwa_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_nazwa_ksiazki[strona])then
tablica_nazwa_ksiazki[strona]={};
end;
if(tablica_nazwa_ksiazki[strona][(czy_link and "tak" or "")])then
return;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
if((strona=="Wersja do druku")or(strona==nazwa_ksiazki))then return "";end;
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"]
and glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona]
and glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]
)then
return glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")];
end;
local naglowek=mw.ustring.match(strona,"/([^/]*)$") or strona;
--end;
local liczba_powtarzanego=Powtarzane(naglowek);
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},1,})
local str=StronaSubstParametr(strona,naglowek,link,nil,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str;
end;
return str;
end;
local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(czy_artykul_aktualny)then
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki]={};
end;
local tablica_nazwa_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
if(tablica_nazwa_ksiazki[substrona])then
return;
end;
end;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tablica_stron={};
local naglowki=parametry_modul.CzyTak(tabela_parametrow_szablonu["nagłówki"]);
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
local sekcje=parametry_modul.CzyTak(tabela_parametrow_szablonu["sekcje"]);
local ktore=tonumber(tabela_parametrow_szablonu["które"]) or 1;
local licznik_numer_tego_samego_rozdzialu=1;
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
if(substrona==rozdzial)then
if(ktore==licznik_numer_tego_samego_rozdzialu)then
local wikikod="";
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][substrona]=wikikod;
end;
return wikikod;
end;
licznik_numer_tego_samego_rozdzialu=licznik_numer_tego_samego_rozdzialu+1;
end;
end;
return "";
end;
local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
mw.log(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_aktualny)then
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
return;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local naglowki=parametry_modul.CzyTak(tabela_parametrow_szablonu["nagłówki"]);
local sekcje=parametry_modul.CzyTak(tabela_parametrow_szablonu["sekcje"]);
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
local wikikod="<div class=\"klasa_książki\">";
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local tablica_stron={};
local licznik_rozdzial_dodatni=0;
local licznik_rozdzial_zerowy=0;
local licznik_rozdzial_centrowany=0;
local licznik_rozdzial_srednikowy=0;
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
wikikod=wikikod.."<div class=\"klasa_naglowka klasa_nagłówka\">";
local m=tab_lista[1][2][1] or 0;
local czy_centrowany=false;
local czy_srednikowy=false;
local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,licznik_rozdzial_centrowany,licznik_rozdzial_dodatni,licznik_rozdzial_srednikowy,licznik_rozdzial_zerowy);
----
if((m~=0)and(rozdzial)and(type(rozdzial)=="string")and(rozdzial~="")and(rozdzial~="Spis treści")and(rozdzial~="Bibliografia")and(rozdzial~="Zobacz też")and(rozdzial~="Inne")and(rozdzial~="Licencja")
)then
local m_uzyskane=HNumer(m);
wikikod=((wikikod~="")and (wikikod.."\n") or "")..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,m_uzyskane);
local liczba_powtarzanego=Powtarzane(rozdzial);
table.insert(toc_nowe,{{mw.ustring.gsub(rozdzial,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), rozdzial,},m_uzyskane,})
end;
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
wikikod=wikikod.."</div>";
end;
wikikod=wikikod.."</div>";
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=wikikod;
end;
return wikikod;
end;
local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(parametr) return "";end;
end;
local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
return "tak";
end;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local ksiazkowe_modul=require("Module:Książkowe");
WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local nazwa_przestrzeni_nazw=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu;
local czy_artykul_aktualny;
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
czy_artykul_aktualny=true;
local tabela_listy_danych_analizy_ksiazki=glowna_tablica.tabela_listy_danych_analizy_ksiazki;
nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
else
local tabela_nazw={};
local pelnanazwastrony=(nazwa_przestrzeni_nazw or nazwy_modul["NazwaPrzestrzeni"](nil,tabela_nazwy))..":"..(nazwa_jednostki or nazwy_modul["NAZWASTRONY"](nil,tabela_nazwy));
tabela_nazw={};
nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](pelnanazwastrony,tabela_nazw);
nazwa_przestrzeni_ksiazki=ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](pelnanazwastrony,tabela_nazw);
nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and ksiazkowe_modul["NazwaTytułuKsiążki"](pelnanazwastrony,tabela_nazw) or ksiazkowe_modul["NazwaKsiążki"](pelnanazwastrony,tabela_nazw);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelnanazwastrony,tabela_nazw);
end;
StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local nazwa_przestrzeni_nazw=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
local spis_artykulow=nil;local pelnanazwastrony;local czy_artykul_aktualny;
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
spis_artykulow=spis;
czy_artykul_aktualny=true;
else
local tabela_nazw={};
pelnanazwastrony=(nazwa_przestrzeni_nazw or nazwy_modul["NAZWAPRZESTRZENI"](nil,tabela_nazwy))..":"..(nazwa_jednostki or nazwy_modul["NAZWASTRONY"](nil,tabela_nazwy));
end;
p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny));
end);
CzyStronaSubst();
glowna_tablica.tabela_listy_danych_analizy_ksiazki.TOC_StronaZbiorcza=toc_nowe;
return tekst_rozwiniety_calego_artykulu;
end;
return p;
hf5ik9fkhj2o7u0oseh9hdldzez07sl
Moduł:Szablonowe
828
58954
542687
539036
2026-05-12T06:57:25Z
Persino
2851
542687
Scribunto
text/plain
local p={};
--zamykanie
local znak_127=mw.loadData("Module:Html/dane").znak_127;
function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu)
local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127;
return wzor;
end;
function p.NormaKoduKodowaniaTekstu(kod,numer)
local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127;
return wikikodnumer;
end;
function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu)
local wzor=znak_127.."�*39;"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"�*39;"..znak_127;
return wzor;
end;
function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer)
local wzor=znak_127.."'"`UNIQ--"..kod.."-"..numer.."-QINU`"'"..znak_127;
return wzor;
end;
function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu)
local wzor=znak_127.."'"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"'"..znak_127;
return wzor;
end;
function p.NormaKoduZakodowanegoWikiTekstu(kod,numer)
local wikikodnumer=znak_127.."'"`UNIQ--"..kod.."-"..numer.."-QINU`"'"..znak_127;
return wikikodnumer;
end;
function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu)
local wzor="%%7F'"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"'%%7F";
return wzor;
end;
function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer)
local wikikodnumer="%7F'"`UNIQ--"..kod.."-"..numer.."-QINU`"'%7F";
return wikikodnumer;
end;
function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY)
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY);
end;
function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu)
local licznik=0;
local tablica_analizy_obiektow_strony_dany_modul={};
tablica_analizy_obiektow_strony_dany_modul["MATH"]={};
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon)
licznik=licznik+1;
tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon;
return p.NormaKoduKodowaniaTekstu("MATH",licznik);
end)
return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul;
end;
function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end;
local parametry_modul=require("Module:Parametry");
local function NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt)
local __max=0;
for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do
if(parametry_modul.TypeNumber(numer))then
__max=math.max(__max,numer);
end;
end;
return __max+1;
end;
local numer_szablonu={};
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
numer_szablonu[obiekt]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
numer_szablonu[obiekt]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
return numer_szablonu;
end;
function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu()
local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane");
local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji;
return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji;
end;
function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun)
local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do
for kod,wartosc in pairs(tab_obiekt)do
local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica();
local tab_wartosc=tablica[kod];
if(tab_wartosc)then
if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then
if(tab_wartosc[2])then
for obiekt_tab,tab_kod in pairs(tab_analiza)do
if(obiekt_tab==obiekt)then
for _,liczba in ipairs(tab_kod)do
local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba];
if(tab_liczba)then
tab_liczba[kod]=nil;
tab_wartosc[2]=false;
end;
end;
end;
end;
end;
else
tablica[kod]=nil;
end;
end;
end;
end;
end;
function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4)
if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end;
local czy_jedno=false;
----
local parametry_modul=require("Module:Parametry");
----
local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare)
local iter=true;local iter_fun;
if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then
iter_fun=function()
local iter=function()
return nil;
end;
return iter;
end;
else
iter_fun=function()
if((not obiekt)and(not kod))then
local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu());
return iter;
else
local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil;
local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu;
if((not szablon)or(szablon==""))then
local iter=function()
return nil;
end;
return iter;
else
local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu());
return iter;
end;
end;
end;
end;
local tak=nil;
local iter2=nil;
poziom_iteracji=poziom_iteracji or 0;
local function Iterator()
local function IterMain()
local obiekt,kod;
----
repeat
if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end;
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon);
if(__FUNKCJA2)then
repeat
local czy_dalej=nil;
local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
if(not jest_naglowek)then
--if(poziom_iteracji>0)then
-- return nil;
--else
repeat
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_dalej=true;
--end;
end;
until (not czy_dalej);
end;
----
tak=true;
if(__FUNKCJA)then
local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu);
if(not wynik)then
czy_jedno=true;
return nil;
else
szablon=wynik;
if(tekst)then
tekst_rozwiniety_calego_artykulu=tekst;
end;
end;
end;
iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE"));
return szablon,obiekt,kod,poziom_iteracji;
end;
if(not tak)then
local szablon,obiekt,kod,poziom_iteracji=IterMain();
if(czy_jedno)then return nil;end;
return szablon,obiekt,kod,poziom_iteracji;
else
local szablon,obiekt,kod,poziom_iteracji=iter2();
if(czy_jedno)then return nil;end;
if((not szablon)or(not kod)or(not obiekt))then
tak=nil;
local szablon,obiekt,kod,poziom_iteracji=IterMain();
if(czy_jedno)then return nil;end;
return szablon,obiekt,kod,poziom_iteracji;
else
return szablon,obiekt,kod,poziom_iteracji;
end;
end;
end;
return Iterator;
end;
return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10)
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local tab_usun={};
local szablon2=nil;
local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji)
local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end;
local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod]));
local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
or (tak and __SZABLON(obiekt,kod) or szablon2);
return szablon;
end);
local poziom_iteracji_poprz=-1;
local tab_dane=nil;
for szablon,obiekt,kod,poziom_iteracji in iterator do
if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end;
szablon2=nil;local wynik;
if(__funkcja1)then
local analiza;
szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
if((analiza)and(__funkcja7))then
local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2);
if(czy_szablon_funkcyjny)then szablon2=szablon2();end;
----
local funkcja_temp;local tak_specjalne=false;
if(tab_dane)then
----
local tak=true;
local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp;
for i=#tab_dane,1,-1 do
local tab_pos=tab_dane[i];
local poziom_iteracji_temp=tab_pos[4];
if(poziom_iteracji_temp<poziom_iteracji)then
szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3];
tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]));
if(not tak)then
local Typ=function()
return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
if(not funkcja_temp)then funkcja_temp=Typ;end;
local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8);
if(czy_funkcja_jako_funkcja8
and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
)then
tak_specjalne=true;
end;
break;
end;
end;
end;
end;
if(tak_specjalne)then wynik=true;end;
if(funkcja_temp)then funkcja_temp();end;
else
local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2);
if(czy_szablon_funkcyjny)then szablon2=szablon2();end;
end;
end;
if(not wynik)then
szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon);
if((not tab_dane)or(#tab_dane==0))then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
else
local tak=true;local tab_wolne;
for i=#tab_dane,1,-1 do
local tab_pos=tab_dane[i];
local poziom_iteracji_temp=tab_pos[4];
if(poziom_iteracji_temp<poziom_iteracji)then
local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3];
tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])));
if(not tak)then
tab_wolne=tab_pos;
break;
end;
end;
end;
if(tak)then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
else
local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3];
local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp];
tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst;
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
end;
end;
-- parametry kodow
local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil;
-- bazowanie kodow
local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil;
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
-- funkcje koncowe
local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil;
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
end;
if(not tab_dane)then tab_dane={};end;
if(poziom_iteracji_poprz>poziom_iteracji)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_dane);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji)then
elseif(poziom_iteracji_poprz==poziom_iteracji)then
table.remove(tab_dane);
end;
table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji});
if(__funkcja2)then
local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
end;
poziom_iteracji_poprz=poziom_iteracji;
end;
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6)
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5);
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={};
for szablon,obiekt,kod,poziom_iteracji in iterator do
local function ZamienianieKodowe(szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul);
if(kod_kodowy_wynik)then
local function ModyfikacjaBazyKodowoSzablonowa()
if(dziecko_zmodyfikowane)then
if((obiekt_zmodyfikowany)and(kod_zmodyfikowany))then
if((obiekt_zmodyfikowany~=obiekt)or(kod_zmodyfikowany~=kod))then
if(not tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany])then
tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany]={};
end;
tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany][kod_zmodyfikowany]=dziecko_zmodyfikowane;
local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany) or nil;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod) or nil;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane;
local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod) or nil;
end;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane;
local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod) or nil;
end;
end;
end;
if(poziom_iteracji>0)then
if(not szablon_rodzica_zmodyfikowany)then
if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then
local ile;
local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica];
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik));
if(ile>0)then
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica;
local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica) or nil;
ModyfikacjaBazyKodowoSzablonowa();
end;
end;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica_zmodyfikowany;
local fun6=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,obiekt_rodzica,kod_rodzica) or nil;
ModyfikacjaBazyKodowoSzablonowa();
end;
else
if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then
local ile;
tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik));
if(ile>0)then
ModyfikacjaBazyKodowoSzablonowa();
end;
end;
end;
elseif(szablon_rodzica_zmodyfikowany)then
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica_zmodyfikowany;
local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,obiekt_rodzica,kod_rodzica) or nil;
end;
end;
if(poziom_iteracji==0)then
ZamienianieKodowe(nil,nil,nil,nil);
else
for i=#tab_poziom_obiekt,1,-1 do
local tab=tab_poziom_obiekt[i];
local poziom_iteracji_rodzica=tab[4];
if(poziom_iteracji_rodzica<poziom_iteracji)then
local szablon_rodzica=tab[1];
local obiekt_rodzica=tab[2];
local kod_rodzica=tab[3];
ZamienianieKodowe(szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica);
break;
end;
end;
end;
if(poziom_iteracji_poprz>poziom_iteracji)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_poziom_obiekt);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji)then
elseif(poziom_iteracji_poprz==poziom_iteracji)then
table.remove(tab_poziom_obiekt);
end;
table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,});
poziom_iteracji_poprz=poziom_iteracji;
end;
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5)
local tablica_szablonow_z_naglowkami=nil;
local tab_sam;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(poziom_iteracji==0)then
tablica_szablonow_z_naglowkami=nil;
tab_sam=nil;
else
if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end;
if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end;
end;
----
local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(wynik)then
if(sam_obiekt and sam_kod)then
return false;
end;
end
local czy_nie_wyzej_sam=false;
local czy_nie_wyzej_poziom=nil;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod)
if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then
return "";
end;
end);
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={}
if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end;
for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do
local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not wynik)then
if(poziom_iteracji_poprz>poziom_iteracji2)then
for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do
table.remove(tab_poziom_obiekt);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji2)then
elseif(poziom_iteracji_poprz==poziom_iteracji2)then
table.remove(tab_poziom_obiekt);
end;
table.insert(tab_poziom_obiekt,{obiekt2,kod2});
poziom_iteracji_poprz=poziom_iteracji2;
czy_nie_wyzej_sam=false;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=false;
end;
else
for _,tab in ipairs(tab_poziom_obiekt)do
if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end;
if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end;
tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true;
end;
if(sam_obiekt and sam_kod)then
if(not tab_sam)then tab_sam={};end;
if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end;
tab_sam[sam_obiekt][sam_kod]=true;
czy_nie_wyzej_sam=true;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=false;
end;
else
if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end;
if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end;
tablica_szablonow_z_naglowkami[obiekt2][kod2]=true;
czy_nie_wyzej_sam=false;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=true;
end;
end;
---poziom_iteracji_poprz=poziom_iteracji2;
end;
end;
if(wynik)then return true;end;
if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end;
if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end;
return nil;
end,__funkcja4,__funkcja5);
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3)
local tablica_szablonow_z_naglowkami=nil;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not wynik)then return nil;end;
return true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
if(obiekt=="SZABLON")then
return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end;
if(__FUNKCJA)then
local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then return;end;
end;
local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(__FUNKCJA2)then
local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return;
end;
end;
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
local parametry_modul=require("Module:Parametry");
local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
local tekst;
if((not czy_niekodowane)and(__FUNKCJA3))then
tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(not tekst)then
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end;
else
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end;
if(not tekst)then return;end;
if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end;
local html_modul=require("Module:Html");
tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst)
if(czy_nie_brak_parametrow)then
if(obiekt=="ZMIENNA")then
local zmienna;local wartosc_domyslna;
zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$");
if(not zmienna)then
zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$");
end;
zmienna=mw.text.trim(zmienna);
local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna];
if(not wartosc_zmiennej)then
if(wartosc_domyslna)then return wartosc_domyslna;end;
local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon);
return szablon;
end;
return wartosc_zmiennej;
end;
end;
end,
function()
return numer_szablonu;
end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
return tekst;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow)
return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
end,
function(nazwa_szablonu,tabela_modyfikatorow,rezultat)
return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end,false);
end;
end;
function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu)
local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self);
tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {};
local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow;
----
tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {};
local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu];
return tablica_danych_parametrow_szablonu_strony;
end;
function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if(not tablica_analizy_obiektow_strony_dany_modul)then
if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end;
if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end;
---
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca];
end;
---
local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca);
return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
end;
function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu)
----
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
---
return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
return tekst_rozwiniety_calego_artykulu;
end;
function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
local tab_usun;
tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(obiekt=="SZABLON")then
local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
----
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
----
local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
if(wynik)then return wynik;end;
end;
return nil,true;
end);
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2)
local html_modul=require("Module:Html");
nazwa=html_modul.DecodeHtml(nazwa,true);
local rezultat=nil;
if(__FUNKCJA)then
local nazwa_rozwinieta;
nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa);
nazwa=nazwa_rozwinieta or nazwa;
end;
local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa);
nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa;
if(not tabela_modyfikatorow)then
nazwa=html_modul.EncodeId(nazwa);
return nazwa;
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
if(nazwa_przestrzeni)then
if(nazwa_przestrzeni=="")then
if(tabela_modyfikatorow["#invoke:"])then
nazwa="Module:"..nazwa;
elseif(tabela_modyfikatorow["int:"])then
nazwa="MediaWiki:"..nazwa;
end;
else
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then
nazwa="Module:"..nazwa;
elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then
nazwa="MediaWiki:"..nazwa;
end;
end;
end;
nazwa=html_modul.EncodeId(nazwa);
return nazwa,tabela_modyfikatorow;
end;
p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony;
end;
end;
end;
if(not czy_szablon)then return;end;
local nazwy_modul=require("Module:Nazwy");
local parametry_modul=require("Module:Parametry");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw);
local nazwa_szablonu;
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]");
if((czy_nie_dwukropek)or(czy_szablon==""))then
local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",};
nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon;
else
nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw);
end;
elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then
nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw);
else
nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw);
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu;
end;
return nazwa_szablonu;
end;
p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony;
end;
end;
end;
local parametry_modul=require("Module:Parametry");
----
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa");
----
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw);
local pelna_nazwa_szablonu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]");
if(czy_nie_dwukropek)then
local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",};
pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu);
else
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw);
end;
else
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw);
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu;
end;
return pelna_nazwa_szablonu;
end;
p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu)
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw);
local klucz_przestrzeni_niekanoniczna;
local wiki_modul=require("Module:Wiki");
local czy_biezaca;
if(tabela_nazw.czy_aktualna_wiki==nil)then
czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
else
czy_biezaca=tabela_nazw.czy_aktualna_wiki;
end;
if(czy_biezaca)then
klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,};
else
klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,};
end;
local pelna_nazwa_szablonu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu;
elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then
pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu;
else
pelna_nazwa_szablonu=nazwa_szablonu;
end;
local tabela_nazw={};
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw);
return pelna_nazwa_szablonu;
end;
p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami;
end;
end;
end;
local czy_z_parametrami;
local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$");
if(not czy_szablon or not zawartosc)then
czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$");
if(not czy_szablon)then return;end;
czy_z_parametrami=false;
else
czy_z_parametrami=true;
end;
--czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon;
local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2);
local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow;
tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami;
end;
return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami;
end;
function p.TablicaTransportuSzablonowe(self)
return self;
end;
local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane)
local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania.."\n","^([^|=]-)$");
if(kawalek_wywolania_element_nienazwany)then
tworzona_tabela[#tworzona_tabela+1]=((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany);
return tworzona_tabela;
else
local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$");
if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then
if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then
tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
else
tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
end;
else
return nil;
end;
end;
return nil;
end;
local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane)
local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$");
if(not kawalek_wywolania)then
kawalek_wywolania=parametry_wywolania_szablonu;
end;
if(not dalszy_kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane);
return parametry_szablonu;
end;
if(kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane);
return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane);
end;
return nil;
end;
p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod)
local nazwa_parsowania=nil;local modyfikatory_parsowania=nil;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then
if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow;
end;
nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu;
modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow;
end;
end;
end;
end;
----
local function NazwaSzablonu(nazwa_szablonu)
if((not nazwa_parsowania)or(not modyfikatory_parsowania))then
local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2);
nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna);
return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna;
else
return nazwa_parsowania,modyfikatory_parsowania;
end;
end;
local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$");
if(not wywolanie_bez_parametrow)then
local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$");
if(nazwa_szablonu)then
local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu);
local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$");
local tabela_parametrow_szablonu={};
tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
tablica_danych_parametrow_szablonu_strony_numer[kod]={};
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
else
local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$"));
if(nazwa_szablonu)then
local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu);
local tabela_parametrow_szablonu={};
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
tablica_danych_parametrow_szablonu_strony_numer[kod]={};
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
end;
end;
function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy)
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory;
local modyfikatory="";
local tab_mod=nil;
if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then
return pole_nazwy,modyfikatory,tab_mod;
end;
----
local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe;
----
local function PojedynczeModyfikatory(pole,modyfikatory)
for modyfikator,tab in pairs(tab_modyfikatory) do
local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$");
if(modyfikator_uzyty)then
if(not tab_mod)then tab_mod={};end;
if(not tab_mod[modyfikator])then
tab_mod[modyfikator]=true;
end;
modyfikatory=modyfikatory..modyfikator_uzyty;
return PojedynczeModyfikatory(pole_dalej,modyfikatory)
end;
end;
return pole,modyfikatory;
end;
local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory);
return pole_ostateczne,modyfikatory_ostateczne,tab_mod;
end;
function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu)
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["#if:"])
or(tabela_modyfikatorow["#ifeq:"])
or(tabela_modyfikatorow["#ifexpr:"])
or(tabela_modyfikatorow["#expr:"])
or(tabela_modyfikatorow["#iferror:"])
or(tabela_modyfikatorow["#ifexist:"])
or(tabela_modyfikatorow["#switch:"])
)then
return true;
end;
end;
end;
function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu)
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["#property:"])
or(tabela_modyfikatorow["#tag:"])
)then
return true;
end;
end;
end;
function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon;
end;
end;
end;
local function RozpatrywanieSzablonowe()
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["int:"])
or(tabela_modyfikatorow["#if:"])
or(tabela_modyfikatorow["#ifeq:"])
or(tabela_modyfikatorow["#ifexpr:"])
or(tabela_modyfikatorow["#expr:"])
or(tabela_modyfikatorow["#iferror:"])
or(tabela_modyfikatorow["#ifexist:"])
or(tabela_modyfikatorow["#tag:"])
or(tabela_modyfikatorow["#switch:"])
or(tabela_modyfikatorow["#property:"])
or(tabela_modyfikatorow["#invoke:"])
or(tabela_modyfikatorow["gender:"])
or (tabela_modyfikatorow["ucfirst:"])
or (tabela_modyfikatorow["lcfirst:"])
or (tabela_modyfikatorow["uc:"])
or (tabela_modyfikatorow["lc:"])
)then
return false;
end;
end;
if((nazwa_szablonu)and(nazwa_szablonu~=""))then
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end;
if(tabela_parametrow_szablonu)then
local parametry_modul=require("Module:Parametry");
local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
if(czy_nie_brak_parametrow)then return true;end;
end;
return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false);
end;
return true;
end;
local wynik=RozpatrywanieSzablonowe();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik;
end;
return wynik;
end;
function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane)
local parametry_modul=require("Module:Parametry");
local tablica_obiektow_strony_danych_kodow_specjalnych_modul={};
local tab_grupa={};
local math_numer=0;local licznik_linkz=1;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then
if(nazwa_szablonu=="R")then
local grupa="";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
-----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
elseif(nazwa_szablonu=="U")then
local grupa="uwaga";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
-----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
elseif(nazwa_szablonu=="Ref")then
local grupa=tabela_parametrow_szablonu["grupa"] or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
end;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="ref")then
tab_atrybuty=tab_atrybuty or {};
local grupa=tab_atrybuty["group"];
grupa=parametry_modul.TypeString(grupa) and grupa or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
end;
elseif(obiekt=="MATH")then
math_numer=math_numer+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer);
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="LINKZ")then
local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$")
if(url)then
local szablon="["..url.." ["..licznik_linkz.."]]";
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
return szablon;
end);
return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul;
end;
function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE)
local parametry_modul=require("Module:parametry");
local tab_grupa={};local licznik_linkz=1;
local tab_usun;
tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="R")then
local grupa="";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
return "["..tab_grupa[grupa].."]"
elseif(nazwa_szablonu=="U")then
local grupa="uwaga";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
return "["..grupa.." "..tab_grupa[grupa].."]";
elseif(nazwa_szablonu=="Ref")then
local grupa=tabela_parametrow_szablonu["grupa"] or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
return "["..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."]";
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="ref")then
tab_atrybuty=tab_atrybuty or {};
local grupa=tab_atrybuty["group"];
grupa=parametry_modul.TypeString(grupa) and grupa or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
return "["..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."]";
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="LINKZ")then
local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$")
if(url)then
local szablon="["..url.." ["..licznik_linkz.."]]";
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
if(__FUNKCJA_INNE_OPERACJE2)then
return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
return szablon;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw)
local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$")
if((adres)and(nazwa))then return adres,nazwa;end;
local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$");
if(adres)then return adres;end;
return nil;
end;
function p.WalidacjaLinkuProjektowego(linkw)
local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw);
if(not adres)then return nil;end;
local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$");
if(spacje_adresu)then return nil;end;
local adres_w_linii=mw.ustring.match(adres,"\n");
if(adres_w_linii)then return nil;end;
local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$");
if(walidacja_adresu)then return nil;end;
if(not nazwa)then return adres,nazwa;end;
local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]");
if(walidacja_nazwy)then return nil;end;
return adres,nazwa;
end;
function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz)
local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$")
if((adres)and(nazwa))then return adres,nazwa;end;
local adres=mw.ustring.match(linkz,"^%[(.-)%]");
return adres;
end;
function p.WalidacjaLinkuNieProjektowego(linkz)
local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz);
if(not adres)then return nil;end;
local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$");
if(spacje_adresu)then return nil;end;
local adres_w_linii=mw.ustring.match(adres,"\n");
if(adres_w_linii)then return nil;end;
local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$");
if(walidacja_adresu)then return nil;end;
if(not nazwa)then return adres,nazwa;end;
local nazwa_w_linii=mw.ustring.match(nazwa,"\n");
if(nazwa_w_linii)then return nil;end;
local walidacja_nazwy=mw.ustring.match(nazwa,"%]");
if(walidacja_nazwy)then return nil;end;
return adres,nazwa;
end;
function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul)
local tablica_kodow={};local tak=false;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki;
for szablon,obiekt,kod in iterator do
if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then
local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu());
for obiekt,kod in iter do
if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end;
tablica_kodow[obiekt][kod]=true;
tak=true;
end;
end;
end;
--if(not tak)then return tekst_rozwiniety_calego_artykulu;end;
local strony_modul=require("Module:Strony");
local specjalne_modul=require("Module:Specjalne");
--local frame=mw.getCurrentFrame();
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"(<)(/?%s*[^<>]+/?)(>)",function(lewy,tekst,prawy)
return ">"..tekst.."<";
end);
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2)
szablon2=mw.ustring.gsub(szablon2,"(<)(/?%s*[^<>]+/?)(>)",function(lewy,tekst,prawy)
return ">"..tekst.."<";
end);
if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then
if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then
szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
return szablon2;
end;
elseif(obiekt2=="LINKW")then
if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end;
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete);
if(czy_nie_linkw)then
return szablon2;
end;
end;
elseif(obiekt2=="LINKZ")then
if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end;
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete);
if(adres)then
local czy_linkz=strony_modul.SprawdzanieURL(adres);
if(not czy_linkz)then return szablon2;end;
else
return szablon2;
end;
end;
return nil,true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
p["PokazanieWywołaniaSzablonu"]=function(szablon, args)
local result = {};
table.insert(result, mw.text.nowiki("{{"));
if mw.isSubsting() then
table.insert(result, "subst:");
end;
table.insert(result, szablon);
if args then
for k, v in pairs(args) do
if (type(k)~="number")then
table.insert(result, "|");
table.insert(result, tostring(k));
table.insert(result, "=");
table.insert(result, mw.text.nowiki(v));
else
table.insert(result, "|");
table.insert(result, mw.text.nowiki(v));
end;
end;
end;
table.insert(result, mw.text.nowiki("}}"));
return table.concat(result);
end;
function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony)
local result={};
table.insert(result,((jako_szablony) and "{{((}}" or "{{"));
for name,_ in pairs(modyfikatory or {})do
table.insert(result,name);
end;
table.insert(result,nazwa);
for name,value in pairs(args or {})do
table.insert(result,((jako_szablony) and "{{!}}" or "|"));
table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value);
end;
table.insert(result,((jako_szablony) and "{{))}}" or "}}"));
return table.concat(result,"");
end;
function p.NazwaSzablonu(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np")
if(nazwa_przestrzeni==nazwy_np_modul.Template)then
return nazwy_modul["NAZWASTRONY"](nazwa);
elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then
return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa);
else
return nazwy_modul["PEŁNANAZWASTRONY"](nazwa);
end;
end;
function p.ZnacznikoweTrueFalseSzeregZnakowy(yes)
local yes_male=mw.ustring.lower(yes);
return ((yes_male=="true") and true or ((yes_male~="false")and yes or false));
end;
local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu)
local liczba_obiektu=liczba_obiektu or 100;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika;
end;
end;
end
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
if(not tablica_analizy_obiektow_strony_dany_modul)then
tablica_analizy_obiektow_strony_dany_modul={};
znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul);
end;
local html_modul=require("Module:Html");
znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik);
znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3");
local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$");
if((nazwa)and(zawartosc))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return mw.ustring.lower(nazwa),zawartosc,nil;
end;
----
local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$");
if(nazwa)then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return mw.ustring.lower(nazwa),nil,nil;
end;
----
local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$");
----
if((not nazwa)or(not atrybuty)or(not zawartosc))then
nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$");
if((not nazwa)or(not atrybuty))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return nil,nil,nil;
end;
end;
-----
local techniczne_modul=require("Module:Techniczne");
local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul);
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty;
end;
return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty;
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104);
end;
function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane)
----
local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(wynik)then return nil;end;
local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu;
--and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry;
----
local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow;
local parametry_modul=require("Module:Parametry");
if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then
tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod);
else
nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod);
tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa);
end;
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
----
if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then
if(__FUNKCJA1 or __FUNKCJA_domyslna)then
local techniczne_modul=require("Module:Techniczne");
if(not tab_pop)then
if((kod)and(tablica_danych_parametrow_szablonu_strony))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony
)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony
)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu;
nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(__FUNKCJA1)then
return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
else
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
else
if(__FUNKCJA8)then
return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then
if(__FUNKCJA2)then
return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
elseif(tabela_modyfikatorow)then
if(tabela_modyfikatorow["#invoke:"])then
if(__FUNKCJA3)then
return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
elseif(tabela_modyfikatorow["#tag:"])then
if(__FUNKCJA4)then
nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu);
return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
else
local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil;
if(czy_sa_takie_funkcje)then
local function CzyTenSzablonToParser(tabela_modyfikatorow)
for name,value in pairs(tabela_modyfikatorow)do
if(mw.ustring.match(name,"^#%a+:$"))then
return true;
end;
end;
return false;
end;
if(CzyTenSzablonToParser(tabela_modyfikatorow))then
if(__FUNKCJA5)then
return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
else
if(__FUNKCJA6)then
return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
else
if(__FUNKCJA9)then
return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
end;
p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("tekst");
local pattern=PobierzParametr(2) or PobierzParametr("wzór");
local szablon=PobierzParametr(3) or PobierzParametr("szablon");
local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami");
----
local parametry_modul=require("Module:Parametry");
czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami))
and czy_z_parametrami
or (((not parametry_modul.TypeString(czy_z_parametrami))
and(not parametry_modul.TypeNil(czy_z_parametrami))
and(not parametry_modul.TypeBoolean(czy_z_parametrami)))
and czy_z_parametrami
or (parametry_modul.CzyTak(czy_z_parametrami) and true or false)
)
);
----
szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",};
szablon=mw.getContentLanguage():ucfirst(szablon);
----
local iter=mw.ustring.gmatch(tekst,pattern);
for nazwa_szablonowa in iter do
local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa);
local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then
if(nazwa_szablonu==szablon)then
return "tak";
end;
end;
end;
return nil;
end;
return p;
hc2v739vnnsa8sgow5dtkkkgg1c2wl7
542688
542687
2026-05-12T07:10:17Z
Persino
2851
Anulowano wersję [[Special:Diff/542687|542687]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
542688
Scribunto
text/plain
local p={};
--zamykanie
local znak_127=mw.loadData("Module:Html/dane").znak_127;
function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu)
local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127;
return wzor;
end;
function p.NormaKoduKodowaniaTekstu(kod,numer)
local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127;
return wikikodnumer;
end;
function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu)
local wzor=znak_127.."�*39;"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"�*39;"..znak_127;
return wzor;
end;
function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer)
local wzor=znak_127.."'"`UNIQ--"..kod.."-"..numer.."-QINU`"'"..znak_127;
return wzor;
end;
function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu)
local wzor=znak_127.."'"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"'"..znak_127;
return wzor;
end;
function p.NormaKoduZakodowanegoWikiTekstu(kod,numer)
local wikikodnumer=znak_127.."'"`UNIQ--"..kod.."-"..numer.."-QINU`"'"..znak_127;
return wikikodnumer;
end;
function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu)
local wzor="%%7F'"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"'%%7F";
return wzor;
end;
function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer)
local wikikodnumer="%7F'"`UNIQ--"..kod.."-"..numer.."-QINU`"'%7F";
return wikikodnumer;
end;
function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY)
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY);
end;
function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu)
local licznik=0;
local tablica_analizy_obiektow_strony_dany_modul={};
tablica_analizy_obiektow_strony_dany_modul["MATH"]={};
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon)
licznik=licznik+1;
tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon;
return p.NormaKoduKodowaniaTekstu("MATH",licznik);
end)
return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul;
end;
function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end;
local parametry_modul=require("Module:Parametry");
local function NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt)
local __max=0;
for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do
if(parametry_modul.TypeNumber(numer))then
__max=math.max(__max,numer);
end;
end;
return __max+1;
end;
local numer_szablonu={};
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
numer_szablonu[obiekt]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
numer_szablonu[obiekt]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
return numer_szablonu;
end;
function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu()
local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane");
local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji;
return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji;
end;
function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun)
local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do
for kod,wartosc in pairs(tab_obiekt)do
local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica();
local tab_wartosc=tablica[kod];
if(tab_wartosc)then
if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then
if(tab_wartosc[2])then
for obiekt_tab,tab_kod in pairs(tab_analiza)do
if(obiekt_tab==obiekt)then
for _,liczba in ipairs(tab_kod)do
local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba];
if(tab_liczba)then
tab_liczba[kod]=nil;
tab_wartosc[2]=false;
end;
end;
end;
end;
end;
else
tablica[kod]=nil;
end;
end;
end;
end;
end;
function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4)
if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end;
local czy_jedno=false;
----
local parametry_modul=require("Module:Parametry");
----
local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare)
local iter=true;local iter_fun;
if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then
iter_fun=function()
local iter=function()
return nil;
end;
return iter;
end;
else
iter_fun=function()
if((not obiekt)and(not kod))then
local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu());
return iter;
else
local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil;
local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu;
if((not szablon)or(szablon==""))then
local iter=function()
return nil;
end;
return iter;
else
local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu());
return iter;
end;
end;
end;
end;
local tak=nil;
local iter2=nil;
poziom_iteracji=poziom_iteracji or 0;
local function Iterator()
local function IterMain()
local obiekt,kod;
----
repeat
if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end;
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon);
if(__FUNKCJA2)then
repeat
local czy_dalej=nil;
local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
if(not jest_naglowek)then
--if(poziom_iteracji>0)then
-- return nil;
--else
repeat
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_dalej=true;
--end;
end;
until (not czy_dalej);
end;
----
tak=true;
if(__FUNKCJA)then
local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu);
if(not wynik)then
czy_jedno=true;
return nil;
else
szablon=wynik;
if(tekst)then
tekst_rozwiniety_calego_artykulu=tekst;
end;
end;
end;
iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE"));
return szablon,obiekt,kod,poziom_iteracji;
end;
if(not tak)then
local szablon,obiekt,kod,poziom_iteracji=IterMain();
if(czy_jedno)then return nil;end;
return szablon,obiekt,kod,poziom_iteracji;
else
local szablon,obiekt,kod,poziom_iteracji=iter2();
if(czy_jedno)then return nil;end;
if((not szablon)or(not kod)or(not obiekt))then
tak=nil;
local szablon,obiekt,kod,poziom_iteracji=IterMain();
if(czy_jedno)then return nil;end;
return szablon,obiekt,kod,poziom_iteracji;
else
return szablon,obiekt,kod,poziom_iteracji;
end;
end;
end;
return Iterator;
end;
return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10)
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local tab_usun={};
local szablon2=nil;
local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji)
local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end;
local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod]));
local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
or (tak and __SZABLON(obiekt,kod) or szablon2);
return szablon;
end);
local poziom_iteracji_poprz=-1;
local tab_dane=nil;
for szablon,obiekt,kod,poziom_iteracji in iterator do
if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end;
szablon2=nil;local wynik;
if(__funkcja1)then
local analiza;
szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
if((analiza)and(__funkcja7))then
local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2);
if(czy_szablon_funkcyjny)then szablon2=szablon2();end;
----
local funkcja_temp;local tak_specjalne=false;
if(tab_dane)then
----
local tak=true;
local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp;
for i=#tab_dane,1,-1 do
local tab_pos=tab_dane[i];
local poziom_iteracji_temp=tab_pos[4];
if(poziom_iteracji_temp<poziom_iteracji)then
szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3];
tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]));
if(not tak)then
local Typ=function()
return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
if(not funkcja_temp)then funkcja_temp=Typ;end;
local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8);
if(czy_funkcja_jako_funkcja8
and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
)then
tak_specjalne=true;
end;
break;
end;
end;
end;
end;
if(tak_specjalne)then wynik=true;end;
if(funkcja_temp)then funkcja_temp();end;
else
local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2);
if(czy_szablon_funkcyjny)then szablon2=szablon2();end;
end;
end;
if(not wynik)then
szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon);
if((not tab_dane)or(#tab_dane==0))then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
else
local tak=true;local tab_wolne;
for i=#tab_dane,1,-1 do
local tab_pos=tab_dane[i];
local poziom_iteracji_temp=tab_pos[4];
if(poziom_iteracji_temp<poziom_iteracji)then
local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3];
tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])));
if(not tak)then
tab_wolne=tab_pos;
break;
end;
end;
end;
if(tak)then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
else
local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3];
local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp];
tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst;
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
end;
end;
-- parametry kodow
local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil;
-- bazowanie kodow
local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil;
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
-- funkcje koncowe
local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil;
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
end;
if(not tab_dane)then tab_dane={};end;
if(poziom_iteracji_poprz>poziom_iteracji)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_dane);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji)then
elseif(poziom_iteracji_poprz==poziom_iteracji)then
table.remove(tab_dane);
end;
table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji});
if(__funkcja2)then
local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
end;
poziom_iteracji_poprz=poziom_iteracji;
end;
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6)
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5);
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={};
for szablon,obiekt,kod,poziom_iteracji in iterator do
local function ZamienianieKodowe(szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul);
if(kod_kodowy_wynik)then
local function ModyfikacjaBazyKodowoSzablonowa()
if(dziecko_zmodyfikowane)then
if((obiekt_zmodyfikowany)and(kod_zmodyfikowany))then
if((obiekt_zmodyfikowany~=obiekt)or(kod_zmodyfikowany~=kod))then
if(not tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany])then
tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany]={};
end;
tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany][kod_zmodyfikowany]=dziecko_zmodyfikowane;
local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany) or nil;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod) or nil;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane;
local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod) or nil;
end;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane;
local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod) or nil;
end;
end;
end;
if(poziom_iteracji>0)then
if(not szablon_rodzica_zmodyfikowany)then
if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then
local ile;
local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica];
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik));
if(ile>0)then
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica;
local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica) or nil;
ModyfikacjaBazyKodowoSzablonowa();
end;
end;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica_zmodyfikowany;
local fun6=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,obiekt_rodzica,kod_rodzica) or nil;
ModyfikacjaBazyKodowoSzablonowa();
end;
else
if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then
local ile;
tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik));
if(ile>0)then
ModyfikacjaBazyKodowoSzablonowa();
end;
end;
end;
elseif(szablon_rodzica_zmodyfikowany)then
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica_zmodyfikowany;
local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,obiekt_rodzica,kod_rodzica) or nil;
end;
end;
if(poziom_iteracji==0)then
ZamienianieKodowe(nil,nil,nil,nil);
else
for i=#tab_poziom_obiekt,1,-1 do
local tab=tab_poziom_obiekt[i];
local poziom_iteracji_rodzica=tab[4];
if(poziom_iteracji_rodzica<poziom_iteracji)then
local szablon_rodzica=tab[1];
local obiekt_rodzica=tab[2];
local kod_rodzica=tab[3];
ZamienianieKodowe(szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica);
break;
end;
end;
end;
if(poziom_iteracji_poprz>poziom_iteracji)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_poziom_obiekt);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji)then
elseif(poziom_iteracji_poprz==poziom_iteracji)then
table.remove(tab_poziom_obiekt);
end;
table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,});
poziom_iteracji_poprz=poziom_iteracji;
end;
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5)
local tablica_szablonow_z_naglowkami=nil;
local tab_sam;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(poziom_iteracji==0)then
tablica_szablonow_z_naglowkami=nil;
tab_sam=nil;
else
if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end;
if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end;
end;
----
local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(wynik)then
if(sam_obiekt and sam_kod)then
return false;
end;
end
local czy_nie_wyzej_sam=false;
local czy_nie_wyzej_poziom=nil;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod)
if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then
return "";
end;
end);
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={}
if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end;
for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do
local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not wynik)then
if(poziom_iteracji_poprz>poziom_iteracji2)then
for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do
table.remove(tab_poziom_obiekt);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji2)then
elseif(poziom_iteracji_poprz==poziom_iteracji2)then
table.remove(tab_poziom_obiekt);
end;
table.insert(tab_poziom_obiekt,{obiekt2,kod2});
poziom_iteracji_poprz=poziom_iteracji2;
czy_nie_wyzej_sam=false;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=false;
end;
else
for _,tab in ipairs(tab_poziom_obiekt)do
if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end;
if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end;
tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true;
end;
if(sam_obiekt and sam_kod)then
if(not tab_sam)then tab_sam={};end;
if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end;
tab_sam[sam_obiekt][sam_kod]=true;
czy_nie_wyzej_sam=true;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=false;
end;
else
if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end;
if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end;
tablica_szablonow_z_naglowkami[obiekt2][kod2]=true;
czy_nie_wyzej_sam=false;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=true;
end;
end;
---poziom_iteracji_poprz=poziom_iteracji2;
end;
end;
if(wynik)then return true;end;
if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end;
if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end;
return nil;
end,__funkcja4,__funkcja5);
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3)
local tablica_szablonow_z_naglowkami=nil;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not wynik)then return nil;end;
return true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
if(obiekt=="SZABLON")then
return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end;
if(__FUNKCJA)then
local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then return;end;
end;
local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(__FUNKCJA2)then
local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return;
end;
end;
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
local parametry_modul=require("Module:Parametry");
local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
local tekst;
if((not czy_niekodowane)and(__FUNKCJA3))then
tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(not tekst)then
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end;
else
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end;
if(not tekst)then return;end;
if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end;
local html_modul=require("Module:Html");
tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst)
if(czy_nie_brak_parametrow)then
if(obiekt=="ZMIENNA")then
local zmienna;local wartosc_domyslna;
zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$");
if(not zmienna)then
zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$");
end;
zmienna=mw.text.trim(zmienna);
local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna];
if(not wartosc_zmiennej)then
if(wartosc_domyslna)then return wartosc_domyslna;end;
local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon);
return szablon;
end;
return wartosc_zmiennej;
end;
end;
end,
function()
return numer_szablonu;
end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
return tekst;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow)
return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
end,
function(nazwa_szablonu,tabela_modyfikatorow,rezultat)
return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end,false);
end;
end;
function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu)
local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self);
tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {};
local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow;
----
tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {};
local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu];
return tablica_danych_parametrow_szablonu_strony;
end;
function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if(not tablica_analizy_obiektow_strony_dany_modul)then
if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end;
if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end;
---
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca];
end;
---
local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca);
return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
end;
function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu)
----
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
---
return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
return tekst_rozwiniety_calego_artykulu;
end;
function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
local tab_usun;
tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(obiekt=="SZABLON")then
local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
----
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
----
local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
if(wynik)then return wynik;end;
end;
return nil,true;
end);
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2)
local html_modul=require("Module:Html");
nazwa=html_modul.DecodeHtml(nazwa,true);
local rezultat=nil;
if(__FUNKCJA)then
local nazwa_rozwinieta;
nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa);
nazwa=nazwa_rozwinieta or nazwa;
end;
local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa);
nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa;
if(not tabela_modyfikatorow)then
nazwa=html_modul.EncodeId(nazwa);
return nazwa;
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
if(nazwa_przestrzeni)then
if(nazwa_przestrzeni=="")then
if(tabela_modyfikatorow["#invoke:"])then
nazwa="Module:"..nazwa;
elseif(tabela_modyfikatorow["int:"])then
nazwa="MediaWiki:"..nazwa;
end;
else
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then
nazwa="Module:"..nazwa;
elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then
nazwa="MediaWiki:"..nazwa;
end;
end;
end;
nazwa=html_modul.EncodeId(nazwa);
return nazwa,tabela_modyfikatorow;
end;
p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony;
end;
end;
end;
if(not czy_szablon)then return;end;
local nazwy_modul=require("Module:Nazwy");
local parametry_modul=require("Module:Parametry");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw);
local nazwa_szablonu;
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]");
if((czy_nie_dwukropek)or(czy_szablon==""))then
local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",};
nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon;
else
nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw);
end;
elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then
nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw);
else
nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw);
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu;
end;
return nazwa_szablonu;
end;
p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony;
end;
end;
end;
local parametry_modul=require("Module:Parametry");
----
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa");
----
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw);
local pelna_nazwa_szablonu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]");
if(czy_nie_dwukropek)then
local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",};
pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu);
else
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw);
end;
else
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw);
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu;
end;
return pelna_nazwa_szablonu;
end;
p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu)
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw);
local klucz_przestrzeni_niekanoniczna;
local wiki_modul=require("Module:Wiki");
local czy_biezaca;
if(tabela_nazw.czy_aktualna_wiki==nil)then
czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
else
czy_biezaca=tabela_nazw.czy_aktualna_wiki;
end;
if(czy_biezaca)then
klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,};
else
klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,};
end;
local pelna_nazwa_szablonu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu;
elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then
pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu;
else
pelna_nazwa_szablonu=nazwa_szablonu;
end;
local tabela_nazw={};
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw);
return pelna_nazwa_szablonu;
end;
p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami;
end;
end;
end;
local czy_z_parametrami;
local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$");
if(not czy_szablon or not zawartosc)then
czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$");
if(not czy_szablon)then return;end;
czy_z_parametrami=false;
else
czy_z_parametrami=true;
end;
--czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon;
local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2);
local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow;
tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami;
end;
return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami;
end;
function p.TablicaTransportuSzablonowe(self)
return self;
end;
local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane)
local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania.."\n","^([^|=]-)$");
if(kawalek_wywolania_element_nienazwany)then
tworzona_tabela[#tworzona_tabela+1]=((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany);
return tworzona_tabela;
else
local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$");
if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then
if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then
tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
else
tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
end;
else
return nil;
end;
end;
return nil;
end;
local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane)
local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$");
if(not kawalek_wywolania)then
kawalek_wywolania=parametry_wywolania_szablonu;
end;
if(not dalszy_kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane);
return parametry_szablonu;
end;
if(kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane);
return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane);
end;
return nil;
end;
p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod)
local nazwa_parsowania=nil;local modyfikatory_parsowania=nil;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then
if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow;
end;
nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu;
modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow;
end;
end;
end;
end;
----
local function NazwaSzablonu(nazwa_szablonu)
if((not nazwa_parsowania)or(not modyfikatory_parsowania))then
local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2);
nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna);
return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna;
else
return nazwa_parsowania,modyfikatory_parsowania;
end;
end;
local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$");
if(not wywolanie_bez_parametrow)then
local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$");
if(nazwa_szablonu)then
local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu);
local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$");
local tabela_parametrow_szablonu={};
tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
tablica_danych_parametrow_szablonu_strony_numer[kod]={};
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
else
local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$"));
if(nazwa_szablonu)then
local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu);
local tabela_parametrow_szablonu={};
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
tablica_danych_parametrow_szablonu_strony_numer[kod]={};
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
end;
end;
function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy)
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory;
local modyfikatory="";
local tab_mod=nil;
if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then
return pole_nazwy,modyfikatory,tab_mod;
end;
----
local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe;
----
local function PojedynczeModyfikatory(pole,modyfikatory)
for modyfikator,tab in pairs(tab_modyfikatory) do
local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$");
if(modyfikator_uzyty)then
if(not tab_mod)then tab_mod={};end;
if(not tab_mod[modyfikator])then
tab_mod[modyfikator]=true;
end;
modyfikatory=modyfikatory..modyfikator_uzyty;
return PojedynczeModyfikatory(pole_dalej,modyfikatory)
end;
end;
return pole,modyfikatory;
end;
local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory);
return pole_ostateczne,modyfikatory_ostateczne,tab_mod;
end;
function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu)
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["#if:"])
or(tabela_modyfikatorow["#ifeq:"])
or(tabela_modyfikatorow["#ifexpr:"])
or(tabela_modyfikatorow["#expr:"])
or(tabela_modyfikatorow["#iferror:"])
or(tabela_modyfikatorow["#ifexist:"])
or(tabela_modyfikatorow["#switch:"])
)then
return true;
end;
end;
end;
function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu)
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["#property:"])
or(tabela_modyfikatorow["#tag:"])
)then
return true;
end;
end;
end;
function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon;
end;
end;
end;
local function RozpatrywanieSzablonowe()
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["int:"])
or(tabela_modyfikatorow["#if:"])
or(tabela_modyfikatorow["#ifeq:"])
or(tabela_modyfikatorow["#ifexpr:"])
or(tabela_modyfikatorow["#expr:"])
or(tabela_modyfikatorow["#iferror:"])
or(tabela_modyfikatorow["#ifexist:"])
or(tabela_modyfikatorow["#tag:"])
or(tabela_modyfikatorow["#switch:"])
or(tabela_modyfikatorow["#property:"])
or(tabela_modyfikatorow["#invoke:"])
or(tabela_modyfikatorow["gender:"])
or (tabela_modyfikatorow["ucfirst:"])
or (tabela_modyfikatorow["lcfirst:"])
or (tabela_modyfikatorow["uc:"])
or (tabela_modyfikatorow["lc:"])
)then
return false;
end;
end;
if((nazwa_szablonu)and(nazwa_szablonu~=""))then
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end;
if(tabela_parametrow_szablonu)then
local parametry_modul=require("Module:Parametry");
local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
if(czy_nie_brak_parametrow)then return true;end;
end;
return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false);
end;
return true;
end;
local wynik=RozpatrywanieSzablonowe();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik;
end;
return wynik;
end;
function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane)
local parametry_modul=require("Module:Parametry");
local tablica_obiektow_strony_danych_kodow_specjalnych_modul={};
local tab_grupa={};
local math_numer=0;local licznik_linkz=1;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then
if(nazwa_szablonu=="R")then
local grupa="";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
-----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
elseif(nazwa_szablonu=="U")then
local grupa="uwaga";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
-----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
elseif(nazwa_szablonu=="Ref")then
local grupa=tabela_parametrow_szablonu["grupa"] or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
end;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="ref")then
tab_atrybuty=tab_atrybuty or {};
local grupa=tab_atrybuty["group"];
grupa=parametry_modul.TypeString(grupa) and grupa or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
end;
elseif(obiekt=="MATH")then
math_numer=math_numer+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer);
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="LINKZ")then
local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$")
if(url)then
local szablon="["..url.." ["..licznik_linkz.."]]";
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
return szablon;
end);
return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul;
end;
function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE)
local parametry_modul=require("Module:parametry");
local tab_grupa={};local licznik_linkz=1;
local tab_usun;
tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="R")then
local grupa="";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
return "["..tab_grupa[grupa].."]"
elseif(nazwa_szablonu=="U")then
local grupa="uwaga";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
return "["..grupa.." "..tab_grupa[grupa].."]";
elseif(nazwa_szablonu=="Ref")then
local grupa=tabela_parametrow_szablonu["grupa"] or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
return "["..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."]";
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="ref")then
tab_atrybuty=tab_atrybuty or {};
local grupa=tab_atrybuty["group"];
grupa=parametry_modul.TypeString(grupa) and grupa or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
return "["..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."]";
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="LINKZ")then
local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$")
if(url)then
local szablon="["..url.." ["..licznik_linkz.."]]";
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
if(__FUNKCJA_INNE_OPERACJE2)then
return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
return szablon;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw)
local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$")
if((adres)and(nazwa))then return adres,nazwa;end;
local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$");
if(adres)then return adres;end;
return nil;
end;
function p.WalidacjaLinkuProjektowego(linkw)
local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw);
if(not adres)then return nil;end;
local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$");
if(spacje_adresu)then return nil;end;
local adres_w_linii=mw.ustring.match(adres,"\n");
if(adres_w_linii)then return nil;end;
local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$");
if(walidacja_adresu)then return nil;end;
if(not nazwa)then return adres,nazwa;end;
local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]");
if(walidacja_nazwy)then return nil;end;
return adres,nazwa;
end;
function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz)
local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$")
if((adres)and(nazwa))then return adres,nazwa;end;
local adres=mw.ustring.match(linkz,"^%[(.-)%]");
return adres;
end;
function p.WalidacjaLinkuNieProjektowego(linkz)
local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz);
if(not adres)then return nil;end;
local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$");
if(spacje_adresu)then return nil;end;
local adres_w_linii=mw.ustring.match(adres,"\n");
if(adres_w_linii)then return nil;end;
local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$");
if(walidacja_adresu)then return nil;end;
if(not nazwa)then return adres,nazwa;end;
local nazwa_w_linii=mw.ustring.match(nazwa,"\n");
if(nazwa_w_linii)then return nil;end;
local walidacja_nazwy=mw.ustring.match(nazwa,"%]");
if(walidacja_nazwy)then return nil;end;
return adres,nazwa;
end;
function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul)
local tablica_kodow={};local tak=false;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki;
for szablon,obiekt,kod in iterator do
if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then
local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu());
for obiekt,kod in iter do
if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end;
tablica_kodow[obiekt][kod]=true;
tak=true;
end;
end;
end;
--if(not tak)then return tekst_rozwiniety_calego_artykulu;end;
local strony_modul=require("Module:Strony");
local specjalne_modul=require("Module:Specjalne");
--local frame=mw.getCurrentFrame();
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2)
if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then
if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then
szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
return szablon2;
end;
elseif(obiekt2=="LINKW")then
if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end;
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete);
if(czy_nie_linkw)then
return szablon2;
end;
end;
elseif(obiekt2=="LINKZ")then
if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end;
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete);
if(adres)then
local czy_linkz=strony_modul.SprawdzanieURL(adres);
if(not czy_linkz)then return szablon2;end;
else
return szablon2;
end;
end;
return nil,true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
p["PokazanieWywołaniaSzablonu"]=function(szablon, args)
local result = {};
table.insert(result, mw.text.nowiki("{{"));
if mw.isSubsting() then
table.insert(result, "subst:");
end;
table.insert(result, szablon);
if args then
for k, v in pairs(args) do
if (type(k)~="number")then
table.insert(result, "|");
table.insert(result, tostring(k));
table.insert(result, "=");
table.insert(result, mw.text.nowiki(v));
else
table.insert(result, "|");
table.insert(result, mw.text.nowiki(v));
end;
end;
end;
table.insert(result, mw.text.nowiki("}}"));
return table.concat(result);
end;
function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony)
local result={};
table.insert(result,((jako_szablony) and "{{((}}" or "{{"));
for name,_ in pairs(modyfikatory or {})do
table.insert(result,name);
end;
table.insert(result,nazwa);
for name,value in pairs(args or {})do
table.insert(result,((jako_szablony) and "{{!}}" or "|"));
table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value);
end;
table.insert(result,((jako_szablony) and "{{))}}" or "}}"));
return table.concat(result,"");
end;
function p.NazwaSzablonu(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np")
if(nazwa_przestrzeni==nazwy_np_modul.Template)then
return nazwy_modul["NAZWASTRONY"](nazwa);
elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then
return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa);
else
return nazwy_modul["PEŁNANAZWASTRONY"](nazwa);
end;
end;
function p.ZnacznikoweTrueFalseSzeregZnakowy(yes)
local yes_male=mw.ustring.lower(yes);
return ((yes_male=="true") and true or ((yes_male~="false")and yes or false));
end;
local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu)
local liczba_obiektu=liczba_obiektu or 100;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika;
end;
end;
end
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
if(not tablica_analizy_obiektow_strony_dany_modul)then
tablica_analizy_obiektow_strony_dany_modul={};
znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul);
end;
local html_modul=require("Module:Html");
znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik);
znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3");
local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$");
if((nazwa)and(zawartosc))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return mw.ustring.lower(nazwa),zawartosc,nil;
end;
----
local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$");
if(nazwa)then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return mw.ustring.lower(nazwa),nil,nil;
end;
----
local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$");
----
if((not nazwa)or(not atrybuty)or(not zawartosc))then
nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$");
if((not nazwa)or(not atrybuty))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return nil,nil,nil;
end;
end;
-----
local techniczne_modul=require("Module:Techniczne");
local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul);
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty;
end;
return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty;
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104);
end;
function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane)
----
local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(wynik)then return nil;end;
local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu;
--and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry;
----
local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow;
local parametry_modul=require("Module:Parametry");
if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then
tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod);
else
nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod);
tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa);
end;
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
----
if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then
if(__FUNKCJA1 or __FUNKCJA_domyslna)then
local techniczne_modul=require("Module:Techniczne");
if(not tab_pop)then
if((kod)and(tablica_danych_parametrow_szablonu_strony))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony
)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony
)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu;
nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(__FUNKCJA1)then
return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
else
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
else
if(__FUNKCJA8)then
return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then
if(__FUNKCJA2)then
return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
elseif(tabela_modyfikatorow)then
if(tabela_modyfikatorow["#invoke:"])then
if(__FUNKCJA3)then
return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
elseif(tabela_modyfikatorow["#tag:"])then
if(__FUNKCJA4)then
nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu);
return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
else
local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil;
if(czy_sa_takie_funkcje)then
local function CzyTenSzablonToParser(tabela_modyfikatorow)
for name,value in pairs(tabela_modyfikatorow)do
if(mw.ustring.match(name,"^#%a+:$"))then
return true;
end;
end;
return false;
end;
if(CzyTenSzablonToParser(tabela_modyfikatorow))then
if(__FUNKCJA5)then
return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
else
if(__FUNKCJA6)then
return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
else
if(__FUNKCJA9)then
return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
end;
p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("tekst");
local pattern=PobierzParametr(2) or PobierzParametr("wzór");
local szablon=PobierzParametr(3) or PobierzParametr("szablon");
local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami");
----
local parametry_modul=require("Module:Parametry");
czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami))
and czy_z_parametrami
or (((not parametry_modul.TypeString(czy_z_parametrami))
and(not parametry_modul.TypeNil(czy_z_parametrami))
and(not parametry_modul.TypeBoolean(czy_z_parametrami)))
and czy_z_parametrami
or (parametry_modul.CzyTak(czy_z_parametrami) and true or false)
)
);
----
szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",};
szablon=mw.getContentLanguage():ucfirst(szablon);
----
local iter=mw.ustring.gmatch(tekst,pattern);
for nazwa_szablonowa in iter do
local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa);
local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then
if(nazwa_szablonu==szablon)then
return "tak";
end;
end;
end;
return nil;
end;
return p;
fllbs485plx2ovrbhpy92hwo9mhaooi
Wikipedysta:Persino/brudnopis4
2
59543
542683
531346
2026-05-12T06:19:34Z
Persino
2851
542683
wikitext
text/x-wiki
{{Spis treści}}
<div>
{{HNumer|1=
==[[/Jednostki układu SI/]]</ol></li></div>==
}}
<h2>Spis treści</h2>
gigat1:
*mamut
{{ce|[[Wikipedysta:Persino/brudnopis4]]{{Br}}
[[TYTAn]][[TYTAn]]}}
==ty{{br}}<span/>tan</div>==
=====tytan1<ref>tytan</ref><source>tytan</source>=====
''zygat sys1 [[/sys/|<newline>tytan<newline>]]''
# [[/Jednostki układu SI/]]
# [[/Wektory i skalary|Wektory i skalary]]
# tytan [[/Wzory|Wzory - przekształcanie]]zaokrąglenieSuwakowe
# [[/Zaokrąglenie|Zaokrąglenie liczbs]]Zaokrąglenie
=====tytan2<ref>tytan</ref><source>tytan</source>=====
''zygat sys2 [[/sys/]]''
# [[/Jednostki układu SI/]]
# [[/Wektory i skalary|Wektory i skalary]]
# [[/Wzory|Wzory - przekształcanie]]
# [[/Zaokrąglenie|Zaokrąglenie liczb]]
''zygat sys [[/sys/]]''
=====tytan3 [[/sys/]] [[/sys/]]=====
* ''zygat3 [[/sys/]] [[/sys/]]''
# [[/Jednostki układu SI/]]
# [[/Wektory i skalary|Wektory i skalary]]
# [[/Wzory|Wzory - przekształcanie]]
# [[/Zaokrąglenie|Zaokrąglenie liczb]]
=====tytan4 [[/sys/]] [[/sys/]]=====
; ''zygat4 [[/sys/]] [[/sys/]]''
# [[/Jednostki układu SI/]]
# [[/Wektory i skalary|Wektory i skalary]]</li></ul>
# [[/Wzory|Wzory - przekształcanie]]
# [[/Zaokrąglenie|Zaokrąglenie liczb]]</li>
; ''zygat [[/sys/]] [[/sys/]]''
s{{ce|TYTAN
TYTAN}}s
==tytan3<pre>tytana
tytanb</pre>==
gigat1:
*{{lg|Wikipedysta:Persino/brudnopis4/tytan}}
[[/Węglowodory/]] {{kompletność|50%|14.10.2008}}
*[[/Węglowodory2/]] {{kompletność|50%|14.10.2008}}
#[[/Węglowodory3/]] {{kompletność|50%|14.10.2008}}
[[/Węglowodory4/]] {{kompletność|50%|14.10.2008}}
#[[/mamut/]]
[[commons:Category:Images with BASH source code| code Obrazy i kod BASH użyty do ich tworzenia ]]
<br />
<center><font size="8">'''Alfabet zwierząt'''</font></center><center><br /><br /><br />
<div class="noprint">
<font size="4">-- [[/A/]] Ą [[/B/]] [[/C/]] [[/Ć/]] [[/D/]] [[/E/]] Ę [[/F/]] [[/G/]] [[/H/]] [[/I/]] [[/J/]] [[/K/]] [[/L/]] [[/Ł/]] [[/M/]] [[/N/]] Ń [[/O/]] Ó [[/P/]] [[/R/]] [[/S/]] [[/Ś/]] [[/T/]] [[/U/]] [[/W/]] Y [[/Z/]] [[/Ź/]] [[/Ż/]] --</font><br />
[[/Autorzy/]]<br/>
</div>
</center>
==tytan2==
<h2 class="mw-hnumber-2">Wprowadzenie tekstu</h2>
gigat2:
* pozwala na dzielenie <nowiki>{{Szablon|a|b|c}}</nowiki> długiego polecenia na kilka linii (ang. a line continuation character ). Składnia<br/> : <backslash><newline><pre>tytan
tytan
</pre>
===Dzielenie słów===
Następuje to w czasie <ref>[https://datacadamia.com/lang/bash/word%20splitting datacadamia : bash word splitting]</ref>
* rozszerzenie parametrów ( ang. parameter expansion) <ref>[https://www.gnu.org/software/bash/manual/html%20node/Shell-Parameter-Expansion.html gnu bash manual : Shell-Parameter-Expansion]</ref>
* zamiana komend ( ang. command substitution)<ref>[https://www.gnu.org/software/bash/manual/html%20node/Command-Substitution.html gnu bash manua: Command-Substitution]</ref>
* rozwinięcie arytmetyczne ( ang. arithmetic expansion)<nowiki>tytan
tytan</nowiki>
* poprawianie i uzupełnianie najlepszych podręczników, standardy (z en books etd.) (druk, pdf, nagłówki, szablony itd. - TO DO + akcja uzupełniania podręczników (merytorycznego), ew. podpiąć to pod wikipedię; [http://wikistics.falsikon.de/latest-daily/wikibooks/pl/]
jeśli nie wystąpiło w podwójnych cudzysłowach
Powłoka traktuje każdy [[Bash#IFS|znak IFS]] jako ogranicznik ( ang. delimiter ) i dzieli wyniki innych interpretacji na słowa na tych znakac
=== Klasy VII–VIII: ===
* [[Streszczenia obowiązkowych lektur szkolnych dla szkoły podstawowej/Charles Dickens – Opowieść wigilijna|Charles Dickens ''– Opowieść wigilijna'']]
* [[Streszczenia obowiązkowych lektur szkolnych dla szkoły podstawowej/Aleksander Fredro – Zemsta|Aleksander Fredro ''– Zemsta'']]
* [[Streszczenia obowiązkowych lektur szkolnych dla szkoły podstawowej/Aleksander Kamiński – Kamienie na szaniec|Aleksander Kamiński ''– Kamienie na szaniec'']]
* [[Streszczenia obowiązkowych lektur szkolnych dla szkoły podstawowej/Adam Mickiewicz – Dziady cz. II|Adam Mickiewicz ''– Dziady cz. II'']]
* [[Streszczenia obowiązkowych lektur szkolnych dla szkoły podstawowej/Adam Mickiewicz – Reduta Ordona|Adam Mickiewicz – ''Reduta Ordona'']]
* [[Streszczenia obowiązkowych lektur szkolnych dla szkoły podstawowej/Adam Mickiewicz – Świtezianka|Adam Mickiewicz – ''Świtezianka'']]
* [[Streszczenia obowiązkowych lektur szkolnych dla szkoły podstawowej/Antoine de Saint-Exupéry – Mały książę|Antoine de Saint-Exupéry ''– Mały książę'']]
* [[Streszczenia obowiązkowych lektur szkolnych dla szkoły podstawowej/Juliusz Słowacki – Balladyna|Juliusz Słowacki ''– Balladyna'']]
* [[Streszczenia obowiązkowych lektur szkolnych dla szkoły podstawowej/Henryk Sienkiewicz – Latarnik|Henryk Sienkiewicz – ''Latarnik'']]
* [[Streszczenia obowiązkowych lektur szkolnych dla szkoły podstawowej/Sławomir Mrożek – Artysta|Sławomir Mrożek – ''Artysta'']]
==== TYTAN ====
== Spis treści ==
__NOTOC__
{{wikipedia|Język hiszpański}}
* [[/Wstęp/]] – podstawowe informacje o języku<nowiki>tytan
tytan
</nowiki>
<div style="font-size: 120%">[[Wikipedysta:Persino/brudnopis4|'''''¡Bienvenidos! – Witamy!''''']]</div>
Hiszpański jest jednym z najbardziej rozpowszechnionych języków świata. Co dzień mówi nim ponad 350 milionów ludzi, zaś kolejne 70 milionów używa go jako drugiego języka.
Mówiąc o języku hiszpańskim, zwykle mamy na myśli język kastylijski (''castellano''), który jest najczęściej używanym w Hiszpanii i na całym świecie dialektem. Inne języki używane na terenie Hiszpanii to kataloński, galicyjski, czy też oksytański.
W wielu krajach, zwłaszcza w Ameryce Południowej, do kastylijskiego (hiszpańskiego) zostały włączone liczne słowa pochodzące z języków rdzennych mieszkańców tych terenów.
<small>< [[/Okładka|Okładka i interwiki]]</small>
== Curso de Español – ''kurs hiszpańskiego''==
==Regulamin wyboru ''„Wkładu miesiąca”''==
* Celem głosowania jest wyróżnienie podręcznika, który w minionym miesiącu dokonał największego postępu, z uwzględnieniem nowo powstających podręczników.<pre>
</pre>
* Nominację powinno się składać nie wcześniej niż tydzień przed rozpoczęciem głosowania. Głosowanie rozpoczyna się pierwszego dnia następnego miesiąca i trwa tydzień czasu.
* Można głosować na dowolną ilość nominacji lub na nieprzyznanie wyróżnienia w danym miesiącu. '''Tylko zarejestrowani użytkownicy z przynajmniej 10 edycjami''' mogą oddawać głosy.
* Przy oddawaniu głosu na nominację, powinno się uwzględnić przede wszystkim '''wkład wniesiony przez użytkowników i autorów w minionym miesiącu''' i ponadto:
** temat książki,
** poprawność językową,
** styl.
* Każda nominowana książka powinna spełniać poniższe kryteria:
** musi być zgodna z zasadami polskich Wikibooks
** musi być '''aktywna''' w miesiącu, którego dotyczy głosowanie,
** musi zawierać '''spis treści''', a także trochę napisanego '''tekstu''',
** '''nie może posiadać wyróżnienia''' w poprzednich miesiącach.
* Wyróżnienie może otrzymać co najwyżej '''jedna''' książka, a otrzymuje ją ta książka, która otrzymała największą ilość głosów.
* Jeśli powstaną pewne niejasności lub problemy przy wyborze podręcznika, uczestnicy zadecydują, co należy w takiej sytuacji zrobić.
* W przypadku otrzymania wyróżnienia, informacja o tym zostanie umieszczona w danej książce i na odpowiedniej stronie {{lk|Podręczniki według tematu|kategorii tematycznych}} i ewentualnie w {{lr|Księgozbiór|księgozbiorze}}.
== Zasilacz ==
Konstrukcje skanerów płaskich, ze względu na wykorzystane elementy światłoczułe (zamieniające sygnał świetlny na elektryczny), dzieli się na dwie grupy:
# '''Urządzenia wykorzystujące układy typu CCD''' (ang. Charge Coupled Device). Konstrukcje takie zawierają lampę z zimną katodą, której rozgrzewanie, w początkowej fazie skanowania, wymaga dostarczenia prądu o większym natężeniu niż urządzenia drugiego typu. Skanery te mają znaczną wagę. Jest to spowodowane faktem, że głowica skanująca, prócz elementów CCD i lampy, zawiera lustro i układ skupiający.
== Dedykacja ==
<div style="text-align: center; margin-bottom: 2em;">''"Książkę tę dedykuję Anecie, która jakiś czas temu zrobiła mi zaszczyt i została moją żoną,
''oraz tym wszystkim, którzy systemu Linux jeszcze nie doświadczyli"''
''Paweł "pavroo" 24.01.2010r.''</div>
== Liczby ==
-----
<div>
# [[/Węglowodory/]] {{kompletność|50%|14.10.2008}}
## [[/Węglowodory2/]] {{kompletność|50%|14.10.2008}}
# [[/Węglowodory3/]] {{kompletność|50%|14.10.2008}}
;tytan2
# [[/Węglowodory4/]] {{kompletność|50%|14.10.2008}}
#tytan
#[[/mamutss/]]
== Liczby2 ==
-----
<div>
# [[/Węglowodory/]] {{kompletność|50%|14.10.2008}}
## [[/Węglowodory2/]] {{kompletność|50%|14.10.2008}}
# [[/Węglowodory3/]] {{kompletność|50%|14.10.2008}}
;tytan3
# [[/Węglowodory4/]] {{kompletność|50%|14.10.2008}}
;;tytan4
#[[/mamutss2/]]
== Koniec ==
* [[Niemiecki/Gramatyka|Gramatyka]] (''Grammatik'')
** [[Niemiecki/Gramatyka/Rodzajniki|Rodzajniki]]
* [[Niemiecki/Słowotwórstwo|Słowotwórstwo]] (''Wortbildung'')
* [[Niemiecki/Teksty|Teksty]] (''Texte'')
** [[Niemiecki/Teksty/Rodzina i przyjaciele|Rodzina i przyjaciele]] (''Familie und Freundskreis'')
** [[Niemiecki/Teksty/Święta i uroczystości|Święta i uroczystości]]
** [[Niemiecki/Wygląd zewnętrzny i cechy charakteru|Wygląd zewnętrzny i cechy charakteru]] (''Aussehen und Charaktereigenschafte'')
* [[Niemiecki/Linki|Linki]] (''Links'')
* ''''tytan'''
<noinclude>== Rozdziały ==
# [[/Instalacja systemu/]]
# [[/Instalacja systemu na pamięci przenośnej/]]
# [[/Czynności poinstalacyjne/]]
# [[/Zarządzanie systemem, pakietami, instalacja programów/]]
# [[/Programy użytkowe/]]
# [[/Rozwiązywanie problemów/]]
# [[/Od autora/]]</noinclude>
----EstońskiLethern/Pomocne
{{PobierzNumerArtykułu|mamutss2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis4}}
----
{{PobierzNumerArtykułu|Autorzy|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis4}}
----
{{PobierzNumerArtykułu|0|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Zwierzęta}}
----
{{PobierzNumerArtykułu|Alkany/Wzory strukturalne i izomeria alkanów|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Chemia organiczna/Podstawy teoretyczne chemii organicznej/Historia chemii organicznej}}
-----Koniec
{{PobierzNumerArtykułu|Koniec|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis4}}
{{PobierzNazwęArtykułu|3.9|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis4}}
----postulaty
{{PobierzNumerArtykułu|Szczyty/Błyszcz|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Tatry/Szczyty/Błyszcz}}
----postulaty
{{PobierzNumerArtykułu|Instalacja_systemu|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Analiza_rzeczywista}}
----
{{NpDane|Category|klucz projektu=en|link=tak|po polsku=tak}}
----
{{Wikipedia2|strona2=Wikibooks|dopełniacz2=Wirtualne podręczniki|strona3=Wikinews|dopełniacz3=Wikinews}}
----
{{Wikipedia2|Wikipedia|dopełniacz1=Wikipedia|Wikibooks|dopełniacz2=Wirtualne podręczniki|strona3=Wikinews|dopełniacz3=Wikinews}}
----
{{PobierzNumerArtykułu|Muzyka|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Estoński/Muzyka}}
----
{{PobierzNumerArtykułu|Ssaki|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Zwierzęta/Ssaki}}
----
{{PobierzNumerArtykułu|Rodzaje płetw|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Zwierzęta/Ssaki}}
----
{{PobierzNumerArtykułu|Zarządzanie_systemem,_pakietami,_instalacja_programów|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Aptosid_-_czyli_Debian_sid_krok_po_kroku_dla_każdego/Zarządzanie_systemem,_pakietami,_instalacja_programów}}
----
{{PobierzNumerArtykułu|Arche|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Filozofia/Arche}}
----
{{PobierzNumerArtykułu|Od_autora|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Aptosid_-_czyli_Debian_sid_krok_po_kroku_dla_każdego/Od_autora}}
----
{{PobierzNumerArtykułu|Rodzaje płetw|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Zwierzęta/Ssaki}}
----
{{PobierzNumerArtykułu|Algorytm_Cohena-Sutherlanda|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Kody_źródłowe/Algorytm_Cohena-Sutherlanda}}
----
{{PobierzNumerArtykułu|Problemy|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fryzjerstwo/Problemy}}
----
{{PobierzNumerArtykułu|O_języku_chińskim|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Chiński/O_języku_chińskim}}
----
{{PobierzNumerArtykułu|Streszczenie|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Mykowirusy_–_wirusy_infekujące_grzyby/Streszczenie}}
----
{{PobierzNumerArtykułu|O_podręczniku|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=C%2B%2B/O_podręczniku}}
----
{{PobierzNumerArtykułu|Podstawy|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Slovio/Podstawy}}
----
{{PobierzNumerArtykułu|Bałtowie|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Cywilizacje/Bałtowie}}
----
{{PobierzNumerArtykułu|iproute2|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Sieci:Linux/iproute2}}
----
{{PobierzNumerArtykułu|Wybór_środowiska_programistycznego|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_C%2B%2B_Qt4_w_systemie_Gnu-Linux/Wybór_środowiska_programistycznego}}
----
{{PobierzNumerArtykułu|Wymowa|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Lożban/Wymowa}}
----
{{PobierzNumerArtykułu|Yerba mate|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Napary}}
{{Przypisy}}
hyilaw4hengz9k1j0fk47th74eb55ex
Moduł:Szablonowe/Potrzebne
828
60145
542678
539037
2026-05-12T04:34:00Z
Persino
2851
542678
Scribunto
text/plain
local p={};
function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst)
local szablonowe_modul=require("Module:Szablonowe");
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod)
return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod);
end);
return tekst;
end;
function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst)
local szablonowe_modul=require("Module:Szablonowe");
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod)
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end);
return tekst;
end;
function p.AtrybutyZnacznika(atrybuty,tab_element)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local tab_specjalne;
if(tab_element)then
atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod)
if(obiekt=="UCIECZKI")then
return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod);
end;
return szablon;
end);
else
tab_specjalne={};local ile=1;
atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny)
local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile);
tab_specjalne[wyraz]=wyraz_specjalny;
ile=ile+1;
return wyraz;
end);
end;
atrybuty=" "..atrybuty.." ";
local tab_atrybuty={};
while(true)do
local szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)");
if((not szablon)or(not name)or(not value))then break;end;
tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value));
szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon);
atrybuty=mw.ustring.gsub(atrybuty,szablon," ");
end;
while(true)do
local szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)");
if((not szablon)or(not name)or(not value))then break;end;
tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value);
szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon);
atrybuty=mw.ustring.gsub(atrybuty,szablon," ");
end;
while(true)do
local szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)");
if(not name)then break;end;
tab_atrybuty[name]=true;
name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon);
atrybuty=mw.ustring.gsub(atrybuty,name," ");
end;
local parametry_modul=require("Module:Parametry");
for name,value in pairs(tab_atrybuty) do
if(not parametry_modul.TypeBoolean(value))then
local value;local ile;
if(tab_element)then
value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod)
local szablon=(tab_element[obiekt] or {})[kod];
return szablon;
end);
else
value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz)
local wynik=tab_specjalne[wyraz];
return wynik;
end);
end;
if(ile>0)then
tab_atrybuty[name]=value;
end;
end;
end;
return tab_atrybuty;
end;
function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element)
local szablonowe_modul=require("Module:Szablonowe");
local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak)
nazwa=nazwa or "ATRYBUTY";
if(not tab_element[nazwa])then tab_element[nazwa]={};end;
tab_element[nazwa][#tab_element[nazwa]+1]=szablon;
local ile=#tab_element[nazwa];
if(not czy_tak)then
local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile);
return szablon_kod;
else
local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile);
return szablon_kod;
end;
end;
local function ZNAKI_UCIECZKI(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po)
local ile=#przed;
if(math.mod(ile,2)==0)then
szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true);
return szablon;
end;
return nil;
end);
return tekst_artykulu;
end;
local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow)
local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end);
if(math.mod(ile,2)==0)then
szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true);
return szablon1..szablon2..szablon3,true;
else
szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2)
__szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true);
return __szablon1..__szablon2;
end);
szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true);
return szablon1..szablon2..szablon3,false;
end;
end;
tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu);
local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor)
repeat
local ile_naprawy_znacznikow=nil;
local ile_naprawy_znacznikow_odejmnoc=0;
tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3)
local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow);
if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end;
return szablon;
end);
ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc;
until(ile_naprawy_znacznikow==0);
return tekst_artykulu;
end;
tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)");
local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile)
kod=tonumber(kod);
local szablon=(tab_element[obiekt] or {})[kod];
if(not szablon)then return nil;end;
local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
ile=ile+1;
return szablon_kodowy,ile;
end;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod)
if(obiekt~="UCIECZKI")then
local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0);
if(not szablon_kodowy)then return nil;end;
return szablon_kodowy;
end;
return nil;
end);
tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
local ile=0;
local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod)
if(obiekt~="UCIECZKI")then
local szablon_kodowy;
szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile);
if(not szablon_kodowy)then return nil;end;
return szablon_kodowy;
end;
return nil;
end);
if(ile==0)then return nil;end;
return true,szablon,obiekt,kod;
end);
tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod)
if(obiekt=="KOŃCOWE")then
return szablon;
end;
return nil,true;
end);
return tekst_artykulu,tab_element;
end;
function p.MetaTabelkaSzablonowe(__metatablica)
local tablica={};local __FUNKCJA;
__metatablica.UstawTablica=function(tablica_inna)
return function()
return tablica_inna or tablica;
end;
end;
__metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt)
__FUNKCJA=__FUNKCJA_start(obiekt);
end;
local fun_tablica=__metatablica.UstawTablica(tablica);
__metatablica.tablica=function()
return fun_tablica();
end;
__metatablica.__len=function(t)
return #fun_tablica();
end;
__metatablica.__index=function(t,klucz)
local tab=fun_tablica()[klucz];
if(tab==nil)then return nil;end;
return tab[1];
end;
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
__metatablica.__pairs=function(t)
return next,fun_tablica(),nil;
end;
local function iter(a,i)
i=i+1;
local v = a[i];
if v then
return i, v;
end
end
__metatablica.__ipairs=function(t)
return iter,fun_tablica(),0;
end;
end;
function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY)
local numer_szablonu;
local strony_modul=require("Module:Strony");
local szeregi_modul=require("Module:Szeregi");
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local szablonowe_modul=require("Module:Szablonowe");
local specjalne_modul=require("Module:Specjalne");
local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki;
local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego;
local function InicjujNumeryPoczatkoweObiektowSzablonow()
if(not __FUNKCJA3)then
numer_szablonu={};
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
numer_szablonu[obiekt]=1;
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
numer_szablonu[obiekt]=1;
end;
else
numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true;
local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co)
if(__FUNKCJA2)then
local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu);
if(wynik)then
numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1;
wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik;
return wynik,false;
end;
end;
if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end;
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]);
---
local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"];
local __metatablica=getmetatable(tab_co);
local czy_ustawiona_metatabelka=__metatablica and true or false;
if(not __metatablica)then
__metatablica={};
p.MetaTabelkaSzablonowe(__metatablica);
setmetatable(tab_co,__metatablica);
end;
local tablica_co=__metatablica.tablica();
local obiekt=co or "SZABLON";
if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then
__metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt);
end;
tablica_co[numer_szablonu[obiekt]]={szablon,false,};
---
numer_szablonu[obiekt]=numer_szablonu[obiekt]+1;
return kod,true;
end;
local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu)
local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2;
local techniczne_modul=require("Module:Techniczne");
local tab_licznik_poczatek={};
local tab_licznik_koniec={};
local tab_element={};
local ObiektFun=function(nazwa)
return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa]
or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil)
or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil);
end;
local INCLUDE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]")
end;
local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon)
local function INNEPREROZ(poczatek,koniec)
repeat
local ile;local ile2=0;
tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod)
if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then
kod=NiedokonczoneElementyWikikodu(kod);
local szablon=spacje..kod;
return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or "");
else
ile2=ile2+1;
end;
end);
ile=ile-ile2;
until (ile==0);
end;
if(not czy_poczt)then
INNEPREROZ(false,true);
INNEPREROZ(false,false);
end;
INNEPREROZ(true,true);
INNEPREROZ(true,false);
return tekst_artykulu;
end;
local tab_znaczniki={};
local tab_numerki={};
local function PreprocesorSzablonow(tekst_artykulu)
tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul);
local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po)
-----
---if((odstepy_przed=="")and(tekst~=""))then return;end;
if(koniec=="")then
local nazwa=mw.ustring.lower(nazwa);
table.insert(tab_znaczniki,nazwa);
local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$");
if(koniec_samozamykajacy=="/")then
tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1;
end;
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end;
table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]);
local licznik=tab_licznik_poczatek[nazwa];
local szablon=nazwa..odstepy_przed..tekst..odstepy_po;
if(not tab_element)then tab_element={};end;
local typ=ObiektFun(nazwa);
if(not typ)then return;end;
---
local czy_znacznik=(typ=="ZNACZNIK");
local czy_include=(typ=="INCLUDE");
local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil);
if(not jak)then return;end;
----
if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end;
tab_element[nazwa..jak][licznik]=szablon;
return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">";
else
local nazwa=mw.ustring.lower(nazwa);
tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1;
local licznik;
if(#tab_znaczniki>0)then
if(tab_znaczniki[#tab_znaczniki]~=nazwa)then
local koniec=0;
for i=#tab_znaczniki-1,1,-1 do
if(tab_znaczniki[i]==nazwa)then
koniec=i;
break;
end;
end;
if(koniec>0)then
licznik=tab_numerki[nazwa][#tab_numerki[nazwa]];
for i=koniec+1,#tab_znaczniki,1 do
tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1;
end;
for i=koniec,#tab_znaczniki,1 do
table.remove(tab_numerki[tab_znaczniki[i]]);
end;
for i=#tab_znaczniki,koniec,-1 do
table.remove(tab_znaczniki);
end;
else
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
licznik=tab_licznik_poczatek[nazwa];
end;
else
licznik=tab_numerki[nazwa][#tab_numerki[nazwa]];
table.remove(tab_numerki[nazwa]);
table.remove(tab_znaczniki);
end;
else
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
licznik=tab_licznik_koniec[nazwa];
end;
local szablon=nazwa..odstepy_przed..tekst..odstepy_po;
if(not tab_element)then tab_element={};end;
local typ=ObiektFun(nazwa);
---
local czy_znacznik=(typ=="ZNACZNIK");
local czy_include=(typ=="INCLUDE");
local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil);
if(not jak)then return;end;
---
if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end;
tab_element[nazwa..jak][licznik]=szablon;
return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">";
end;
end);
return tekst_artykulu;
end;
tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true);
local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2)
tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,
function(linia)
local a;local b;
a=mw.ustring.match(linia,wzor1);
if(not a)then
a,b=mw.ustring.match(linia,wzor2);
if(not a)then return nil;end;
end;
if(b)then
b=ZnacznikiWiki(b,false,false);
return a..b;
else
a=ZnacznikiWiki(a,false,false);
return a;
end;
end);
return tekst_artykulu;
end;
----
tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$");
tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false);
----
local function AnalizujDomykajace(tekst_artykulu,jak,co)
local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod)
local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$");
nazwa=mw.ustring.lower(nazwa);
if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then
local szablon="<"..poczatek..nazwa_przed..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa));
end;
return nil;
end);
return tekst_artykulu;
end;
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin");
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin");
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end");
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end");
----
return tekst_artykulu;
end;
tekst_artykulu=PreprocesorSzablonow(tekst_artykulu);
local function Kompilacja(tekst_artykulu)
----
local ZamianaLINKWNaLINKZ=function(zawartosc,dalej)
local czy_url=strony_modul.SprawdzanieURL(zawartosc);
if(czy_url)then
local szablon="["..zawartosc.."]";
return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej;
else
if((dalej)and(dalej~=""))then
if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then
local szablon;
if(mw.ustring.match(zawartosc,"|"))then
szablon="[["..zawartosc..dalej.."]]";
else
local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*","");
szablon="[["..zawartosc.."|"..nazwa..dalej.."]]";
end;
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW");
end;
end;
local szablon="[["..zawartosc.."]]";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej;
end;
end;
local PracePrzygotowywujace;
NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main)
local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow)
repeat
local ile_znacznik_niedomykajacy;
local ile_znacznik_niedomykajacy_ujemny=0;
tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc)
local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
if(tablica_znacznikow)then
if(not tablica_znacznikow[nazwa_przed])then
ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1;
return nil;
end;
end;
zawartosc=INNEPRE(zawartosc,true);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$");
local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$")
or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$")
) and "\n" or "").."</"..nazwa..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK");
end);
ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny;
until (ile_znacznik_niedomykajacy==0);
repeat
local ile_znacznik_nieotwierajacy;
local ile_znacznik_nieotwierajacy_ujemny=0;
tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod)
local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element);
if(tablica_znacznikow)then
if(not tablica_znacznikow[nazwa_po])then
ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1;
return nil;
end;
end;
zawartosc=INNEPRE(zawartosc);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$");
local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n")
or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n")
) and "\n" or "")..zawartosc.."</"..nazwa_po..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK");
end);
ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny;
until (ile_znacznik_nieotwierajacy==0);
return tekst_artykulu;
end;
if(__FUNCTION_niedokonczone)then
local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element);
if(gdy_nie)then
if(czy_koniec)then return wynik or tekst_artykulu;end;
tekst_artykulu=wynik or tekst_artykulu;
tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu;
tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu;
return tekst_artykulu;
else
tekst_artykulu=wynik or tekst_artykulu;
end;
end;
local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu)
repeat
local ile_wikitabela_1;
tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$",
function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon)
return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3);
end,
function(licznik_wzor,poczatek,szablon)
szablon=INNEPRE(szablon,true);
szablon=NiedokonczoneElementyWikikodu(szablon);
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element);
return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA");
end,
function(wzor,licznik_wzor,czy)
if(czy_main)then
if(licznik_wzor==1)then return "^"..wzor,true;end;
return "\n"..wzor,false;
else
return "\n"..wzor,false;
end;
end);
until (ile_wikitabela_1==0);
repeat
local ile_wikitabela_2;
tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec)
szablon=INNEPRE(szablon);
szablon=NiedokonczoneElementyWikikodu(szablon);
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element);
return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA");
end);
until (ile_wikitabela_2==0);
return tekst_artykulu;
end;
local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne)
tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia)
local dodatnie=nil;
local a,b,c=mw.ustring.match(linia,wzor_dodatnie);
if((not a)or(not b)or(not c))then
a,b=mw.ustring.match(linia,wzor_ujemne);
if((not a)or(not b))then return nil;end;
c=nil;
else
dodatnie=true;
end;
if(dodatnie)then
b=DomykajaceIOdtwierajace(b,"");
return a..b..c;
else
b=DomykajaceIOdtwierajace(b,"");
return a..b;
end;
end);
return tekst_artykulu;
end;
---
tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne");
-----
local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$";
local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$";
tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne);
-----
---
--tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne");
tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"");
tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu);
return tekst_artykulu;
end;
local function ZNACZNIKI(tekst_artykulu,jak)
local ile_odjac_znacznik_niedomykajacy=0;
local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2)
local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$");
nazwa=mw.ustring.lower(nazwa);
local function TenZnacznik()
local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
if(jak=="")then
zawartosc=INNEPRE(zawartosc,true);
end;
local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa));
end;
local function InneZnacznik()
ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1;
local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">";
return szablon;
end;
if(not mw.ustring.match(atrybuty,"^%s*$"))then
if(odstepy~="")then
if((jak~="")and(jak~="inc"))then
return TenZnacznik();
end;
else
return InneZnacznik();
end;
else
if((jak~="")and(jak~="inc"))then
return TenZnacznik();
end;
end;
----
local ile_zastapione;local ile_pominiete;
zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak);
zawartosc=PracePrzygotowywujace(zawartosc);
zawartosc=INNEPRE(zawartosc,true);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
return TenZnacznik();
end);
return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy;
end;
----
PracePrzygotowywujace=function(tekst_artykulu,czy_main)
local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela;
local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej)
local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy;
zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,"");
zawartosc=PracePrzygotowywujace(zawartosc);
zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON"));
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
if(czy_linkw)then
return ZamianaLINKWNaLINKZ(zawartosc,dalej);
else
local szablon=przed..zawartosc..po;
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
end;
repeat
repeat
tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)",
function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej)
return mw.ustring.match(szablon,"%[%["),2;
end,
function(szablon,dodatkowe,dalej)
if(dodatkowe~="")then
local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$");
if(czy_linkz)then
szablon=szablon..dodatkowe;
return Szablon(szablon,"[[","]]","LINKW",true,dalej);
else
return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej;
end;
else
return Szablon(szablon,"[[","]]","LINKW",true,dalej);
end;
end);
until (ile_linkw==0);
tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]",
function(szereg,numer,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"%["),1;
end,
function(szablon)
return Szablon(szablon,"[","]","LINKZ");
end);
repeat
tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}",
function(szereg,numer,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"%{%{%{"),3;
end,
function(szablon)
return Szablon(szablon,"{{{","}}}","ZMIENNA");
end);
until (ile_var==0);
tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}",
function(szereg,numer,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"%{%{"),2;
end,
function(szablon)
return Szablon(szablon,"{{","}}","SZABLON");
end);
tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}",
function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3);
end,
function(licznik_wzor,szablon)
if((czy_main)and(licznik_wzor==1))then
return Szablon(szablon,"{|","\n|}","WIKITABELA");
else
return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA");
end;
end,
function(wzor,numer_begin,czy)
if(czy_main)then
if(numer_begin==1)then return "^"..wzor,true;end;
return "\n"..wzor,false;
else
return "\n"..wzor,false;
end;
end);
until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0));
return tekst_artykulu;
end;
----
local ile_odjac_znacznik_niedomykajacy_0;
if(__FUNCTION_INCLUDE)then
tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc");
ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0;
----
tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="INCLUDE")then
local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul);
if(__FUNCTION_INCLUDE(nazwa))then
local function inc(zawartosc)
return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}")
or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}")
)and true or false;
end;
if(nazwa=="noinclude")then
if(poziom_iteracji==0)then
return (not inc(zawartosc)) and "" or zawartosc;
else
return zawartosc;
end;
elseif(nazwa=="includeonly")then
if(poziom_iteracji==0)then
return (not inc(zawartosc)) and zawartosc or "";
else
return "";
end;
end;
end;
end;
return nil,true;
end);
end;
----
local ile_odjac_znacznik_niedomykajacy_1;
tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne");
ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1;
----
tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true);
----
local ile_odjac_znacznik_niedomykajacy_2;
tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,"");
return tekst_artykulu;
end;
PREWSTAWIAJACA=function(tekst_artykulu)
czy_wynik=nil;
tekst_artykulu=PreprocesorSzablonow(tekst_artykulu);
tekst_artykulu=Kompilacja(tekst_artykulu);
czy_wynik=true;
return tekst_artykulu;
end;
tekst_artykulu=Kompilacja(tekst_artykulu)
local function PoczatekKoniecTekst(tekst_artykulu)
local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil);
local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil);
if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then
tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek;
tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec;
tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or "");
end;
return tekst_artykulu;
end;
tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu);
local function PraceKoncowe(tekst_artykulu)
tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true);
return tekst_artykulu;
end;
tekst_artykulu=PraceKoncowe(tekst_artykulu);
tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element);
tekst_artykulu=INNEPRE(tekst_artykulu);
tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul);
return tekst_artykulu;
end;
local function InicjujTabela()
if(not __FUNKCJA3)then
if(not __FUNKCJA4)then
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
end;
else
tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
else
if(__FUNKCJA4)then
tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
end;
local function UstawieniaPoczatkoweObiektowSzablonow()
if(not tablica_analizy_obiektow_strony_dany_modul)then
if((self.tablica_analizy_obiektow_strony_dany_modul)
and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])
)then
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];
numer_szablonu=self.numer_szablonu;
else
if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end;
if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end;
---
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];
---
InicjujNumeryPoczatkoweObiektowSzablonow();
self.numer_szablonu=numer_szablonu;
InicjujTabela();
end;
else
InicjujNumeryPoczatkoweObiektowSzablonow();
InicjujTabela();
end;
end;
----
UstawieniaPoczatkoweObiektowSzablonow();
---
local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod)
if(czy_tak)then
local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil;
local kod=tablica_szablon_obiekt and tonumber(kod) or nil;
if(kod)then
local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil;
if(not szablon_wynik)then
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE");
else
local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu);
return wynik;
end;
else
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE");
end;
else
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE");
end;
end);
return tekst_artykulu;
end;
tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true);
tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false);
tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu);
return tekst_artykulu;
end;
return p;
b2mjc1swc53azuz1x5s39ohe15cchyl
542679
542678
2026-05-12T04:41:58Z
Persino
2851
542679
Scribunto
text/plain
local p={};
function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst)
local szablonowe_modul=require("Module:Szablonowe");
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod)
return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod);
end);
return tekst;
end;
function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst)
local szablonowe_modul=require("Module:Szablonowe");
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod)
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end);
return tekst;
end;
function p.AtrybutyZnacznika(atrybuty,tab_element)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local tab_specjalne;
if(tab_element)then
atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod)
if(obiekt=="UCIECZKI")then
return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod);
end;
return szablon;
end);
else
tab_specjalne={};local ile=1;
atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny)
local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile);
tab_specjalne[wyraz]=wyraz_specjalny;
ile=ile+1;
return wyraz;
end);
end;
atrybuty=" "..atrybuty.." ";
local tab_atrybuty={};
while(true)do
local szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)");
if((not szablon)or(not name)or(not value))then break;end;
tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value));
szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon);
atrybuty=mw.ustring.gsub(atrybuty,szablon," ");
end;
while(true)do
local szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)");
if((not szablon)or(not name)or(not value))then break;end;
tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value);
szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon);
atrybuty=mw.ustring.gsub(atrybuty,szablon," ");
end;
while(true)do
local szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)");
if(not name)then break;end;
tab_atrybuty[name]=true;
name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon);
atrybuty=mw.ustring.gsub(atrybuty,name," ");
end;
local parametry_modul=require("Module:Parametry");
for name,value in pairs(tab_atrybuty) do
if(not parametry_modul.TypeBoolean(value))then
local value;local ile;
if(tab_element)then
value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod)
local szablon=(tab_element[obiekt] or {})[kod];
return szablon;
end);
else
value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz)
local wynik=tab_specjalne[wyraz];
return wynik;
end);
end;
if(ile>0)then
tab_atrybuty[name]=value;
end;
end;
end;
return tab_atrybuty;
end;
function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element)
local szablonowe_modul=require("Module:Szablonowe");
local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak)
nazwa=nazwa or "ATRYBUTY";
if(not tab_element[nazwa])then tab_element[nazwa]={};end;
tab_element[nazwa][#tab_element[nazwa]+1]=szablon;
local ile=#tab_element[nazwa];
if(not czy_tak)then
local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile);
return szablon_kod;
else
local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile);
return szablon_kod;
end;
end;
local function ZNAKI_UCIECZKI(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po)
local ile=#przed;
if(math.mod(ile,2)==0)then
szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true);
return szablon;
end;
return nil;
end);
return tekst_artykulu;
end;
local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow)
local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end);
if(math.mod(ile,2)==0)then
szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true);
return szablon1..szablon2..szablon3,true;
else
szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2)
__szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true);
return __szablon1..__szablon2;
end);
szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true);
return szablon1..szablon2..szablon3,false;
end;
end;
tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu);
local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor)
repeat
local ile_naprawy_znacznikow=nil;
local ile_naprawy_znacznikow_odejmnoc=0;
tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3)
local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow);
if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end;
return szablon;
end);
ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc;
until(ile_naprawy_znacznikow==0);
return tekst_artykulu;
end;
tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)");
local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile)
kod=tonumber(kod);
local szablon=(tab_element[obiekt] or {})[kod];
if(not szablon)then return nil;end;
local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
ile=ile+1;
return szablon_kodowy,ile;
end;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod)
if(obiekt~="UCIECZKI")then
local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0);
if(not szablon_kodowy)then return nil;end;
return szablon_kodowy;
end;
return nil;
end);
tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
local ile=0;
local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod)
if(obiekt~="UCIECZKI")then
local szablon_kodowy;
szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile);
if(not szablon_kodowy)then return nil;end;
return szablon_kodowy;
end;
return nil;
end);
if(ile==0)then return nil;end;
return true,szablon,obiekt,kod;
end);
tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod)
if(obiekt=="KOŃCOWE")then
return szablon;
end;
return nil,true;
end);
return tekst_artykulu,tab_element;
end;
function p.MetaTabelkaSzablonowe(__metatablica)
local tablica={};local __FUNKCJA;
__metatablica.UstawTablica=function(tablica_inna)
return function()
return tablica_inna or tablica;
end;
end;
__metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt)
__FUNKCJA=__FUNKCJA_start(obiekt);
end;
local fun_tablica=__metatablica.UstawTablica(tablica);
__metatablica.tablica=function()
return fun_tablica();
end;
__metatablica.__len=function(t)
return #fun_tablica();
end;
__metatablica.__index=function(t,klucz)
local tab=fun_tablica()[klucz];
if(tab==nil)then return nil;end;
return tab[1];
end;
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
__metatablica.__pairs=function(t)
return next,fun_tablica(),nil;
end;
local function iter(a,i)
i=i+1;
local v = a[i];
if v then
return i, v;
end
end
__metatablica.__ipairs=function(t)
return iter,fun_tablica(),0;
end;
end;
function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY)
local numer_szablonu;
local strony_modul=require("Module:Strony");
local szeregi_modul=require("Module:Szeregi");
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local szablonowe_modul=require("Module:Szablonowe");
local specjalne_modul=require("Module:Specjalne");
local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki;
local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego;
local function InicjujNumeryPoczatkoweObiektowSzablonow()
if(not __FUNKCJA3)then
numer_szablonu={};
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
numer_szablonu[obiekt]=1;
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
numer_szablonu[obiekt]=1;
end;
else
numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true;
local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co)
if(__FUNKCJA2)then
local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu);
if(wynik)then
numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1;
wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik;
return wynik,false;
end;
end;
if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end;
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]);
---
local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"];
local __metatablica=getmetatable(tab_co);
local czy_ustawiona_metatabelka=__metatablica and true or false;
if(not __metatablica)then
__metatablica={};
p.MetaTabelkaSzablonowe(__metatablica);
setmetatable(tab_co,__metatablica);
end;
local tablica_co=__metatablica.tablica();
local obiekt=co or "SZABLON";
if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then
__metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt);
end;
tablica_co[numer_szablonu[obiekt]]={szablon,false,};
---
numer_szablonu[obiekt]=numer_szablonu[obiekt]+1;
return kod,true;
end;
local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu)
local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2;
local techniczne_modul=require("Module:Techniczne");
local tab_licznik_poczatek={};
local tab_licznik_koniec={};
local tab_element={};
local ObiektFun=function(nazwa)
return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa]
or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil)
or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil);
end;
local INCLUDE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]")
end;
local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon)
local function INNEPREROZ(poczatek,koniec)
repeat
local ile;local ile2=0;
tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod)
if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then
kod=NiedokonczoneElementyWikikodu(kod);
local szablon=spacje..kod;
return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or "");
else
ile2=ile2+1;
end;
end);
ile=ile-ile2;
until (ile==0);
end;
if(not czy_poczt)then
INNEPREROZ(false,true);
INNEPREROZ(false,false);
end;
INNEPREROZ(true,true);
INNEPREROZ(true,false);
return tekst_artykulu;
end;
local tab_znaczniki={};
local tab_numerki={};
local function PreprocesorSzablonow(tekst_artykulu)
tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul);
local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po)
-----
if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end;
if(koniec=="")then
local nazwa=mw.ustring.lower(nazwa);
table.insert(tab_znaczniki,nazwa);
local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$");
if(koniec_samozamykajacy=="/")then
tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1;
end;
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end;
table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]);
local licznik=tab_licznik_poczatek[nazwa];
local szablon=nazwa..odstepy_przed..tekst..odstepy_po;
if(not tab_element)then tab_element={};end;
local typ=ObiektFun(nazwa);
if(not typ)then return;end;
---
local czy_znacznik=(typ=="ZNACZNIK");
local czy_include=(typ=="INCLUDE");
local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil);
if(not jak)then return;end;
----
if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end;
tab_element[nazwa..jak][licznik]=szablon;
return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">";
else
local nazwa=mw.ustring.lower(nazwa);
tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1;
local licznik;
if(#tab_znaczniki>0)then
if(tab_znaczniki[#tab_znaczniki]~=nazwa)then
local koniec=0;
for i=#tab_znaczniki-1,1,-1 do
if(tab_znaczniki[i]==nazwa)then
koniec=i;
break;
end;
end;
if(koniec>0)then
licznik=tab_numerki[nazwa][#tab_numerki[nazwa]];
for i=koniec+1,#tab_znaczniki,1 do
tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1;
end;
for i=koniec,#tab_znaczniki,1 do
table.remove(tab_numerki[tab_znaczniki[i]]);
end;
for i=#tab_znaczniki,koniec,-1 do
table.remove(tab_znaczniki);
end;
else
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
licznik=tab_licznik_poczatek[nazwa];
end;
else
licznik=tab_numerki[nazwa][#tab_numerki[nazwa]];
table.remove(tab_numerki[nazwa]);
table.remove(tab_znaczniki);
end;
else
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
licznik=tab_licznik_koniec[nazwa];
end;
local szablon=nazwa..odstepy_przed..tekst..odstepy_po;
if(not tab_element)then tab_element={};end;
local typ=ObiektFun(nazwa);
---
local czy_znacznik=(typ=="ZNACZNIK");
local czy_include=(typ=="INCLUDE");
local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil);
if(not jak)then return;end;
---
if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end;
tab_element[nazwa..jak][licznik]=szablon;
return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">";
end;
end);
return tekst_artykulu;
end;
tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true);
local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2)
tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,
function(linia)
local a;local b;
a=mw.ustring.match(linia,wzor1);
if(not a)then
a,b=mw.ustring.match(linia,wzor2);
if(not a)then return nil;end;
end;
if(b)then
b=ZnacznikiWiki(b,false,false);
return a..b;
else
a=ZnacznikiWiki(a,false,false);
return a;
end;
end);
return tekst_artykulu;
end;
----
tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$");
tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false);
----
local function AnalizujDomykajace(tekst_artykulu,jak,co)
local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod)
local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$");
nazwa=mw.ustring.lower(nazwa);
if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then
local szablon="<"..poczatek..nazwa_przed..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa));
end;
return nil;
end);
return tekst_artykulu;
end;
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin");
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin");
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end");
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end");
----
return tekst_artykulu;
end;
tekst_artykulu=PreprocesorSzablonow(tekst_artykulu);
local function Kompilacja(tekst_artykulu)
----
local ZamianaLINKWNaLINKZ=function(zawartosc,dalej)
local czy_url=strony_modul.SprawdzanieURL(zawartosc);
if(czy_url)then
local szablon="["..zawartosc.."]";
return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej;
else
if((dalej)and(dalej~=""))then
if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then
local szablon;
if(mw.ustring.match(zawartosc,"|"))then
szablon="[["..zawartosc..dalej.."]]";
else
local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*","");
szablon="[["..zawartosc.."|"..nazwa..dalej.."]]";
end;
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW");
end;
end;
local szablon="[["..zawartosc.."]]";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej;
end;
end;
local PracePrzygotowywujace;
NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main)
local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow)
repeat
local ile_znacznik_niedomykajacy;
local ile_znacznik_niedomykajacy_ujemny=0;
tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc)
local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
if(tablica_znacznikow)then
if(not tablica_znacznikow[nazwa_przed])then
ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1;
return nil;
end;
end;
zawartosc=INNEPRE(zawartosc,true);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$");
local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$")
or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$")
) and "\n" or "").."</"..nazwa..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK");
end);
ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny;
until (ile_znacznik_niedomykajacy==0);
repeat
local ile_znacznik_nieotwierajacy;
local ile_znacznik_nieotwierajacy_ujemny=0;
tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod)
local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element);
if(tablica_znacznikow)then
if(not tablica_znacznikow[nazwa_po])then
ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1;
return nil;
end;
end;
zawartosc=INNEPRE(zawartosc);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$");
local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n")
or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n")
) and "\n" or "")..zawartosc.."</"..nazwa_po..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK");
end);
ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny;
until (ile_znacznik_nieotwierajacy==0);
return tekst_artykulu;
end;
if(__FUNCTION_niedokonczone)then
local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element);
if(gdy_nie)then
if(czy_koniec)then return wynik or tekst_artykulu;end;
tekst_artykulu=wynik or tekst_artykulu;
tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu;
tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu;
return tekst_artykulu;
else
tekst_artykulu=wynik or tekst_artykulu;
end;
end;
local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu)
repeat
local ile_wikitabela_1;
tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$",
function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon)
return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3);
end,
function(licznik_wzor,poczatek,szablon)
szablon=INNEPRE(szablon,true);
szablon=NiedokonczoneElementyWikikodu(szablon);
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element);
return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA");
end,
function(wzor,licznik_wzor,czy)
if(czy_main)then
if(licznik_wzor==1)then return "^"..wzor,true;end;
return "\n"..wzor,false;
else
return "\n"..wzor,false;
end;
end);
until (ile_wikitabela_1==0);
repeat
local ile_wikitabela_2;
tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec)
szablon=INNEPRE(szablon);
szablon=NiedokonczoneElementyWikikodu(szablon);
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element);
return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA");
end);
until (ile_wikitabela_2==0);
return tekst_artykulu;
end;
local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne)
tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia)
local dodatnie=nil;
local a,b,c=mw.ustring.match(linia,wzor_dodatnie);
if((not a)or(not b)or(not c))then
a,b=mw.ustring.match(linia,wzor_ujemne);
if((not a)or(not b))then return nil;end;
c=nil;
else
dodatnie=true;
end;
if(dodatnie)then
b=DomykajaceIOdtwierajace(b,"");
return a..b..c;
else
b=DomykajaceIOdtwierajace(b,"");
return a..b;
end;
end);
return tekst_artykulu;
end;
---
tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne");
-----
local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$";
local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$";
tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne);
-----
---
--tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne");
tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"");
tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu);
return tekst_artykulu;
end;
local function ZNACZNIKI(tekst_artykulu,jak)
local ile_odjac_znacznik_niedomykajacy=0;
local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2)
local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$");
nazwa=mw.ustring.lower(nazwa);
local function TenZnacznik()
local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
if(jak=="")then
zawartosc=INNEPRE(zawartosc,true);
end;
local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa));
end;
local function InneZnacznik()
ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1;
local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">";
return szablon;
end;
if(not mw.ustring.match(atrybuty,"^%s*$"))then
if(odstepy~="")then
if((jak~="")and(jak~="inc"))then
return TenZnacznik();
end;
else
return InneZnacznik();
end;
else
if((jak~="")and(jak~="inc"))then
return TenZnacznik();
end;
end;
----
local ile_zastapione;local ile_pominiete;
zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak);
zawartosc=PracePrzygotowywujace(zawartosc);
zawartosc=INNEPRE(zawartosc,true);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
return TenZnacznik();
end);
return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy;
end;
----
PracePrzygotowywujace=function(tekst_artykulu,czy_main)
local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela;
local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej)
local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy;
zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,"");
zawartosc=PracePrzygotowywujace(zawartosc);
zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON"));
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
if(czy_linkw)then
return ZamianaLINKWNaLINKZ(zawartosc,dalej);
else
local szablon=przed..zawartosc..po;
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
end;
repeat
repeat
tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)",
function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej)
return mw.ustring.match(szablon,"%[%["),2;
end,
function(szablon,dodatkowe,dalej)
if(dodatkowe~="")then
local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$");
if(czy_linkz)then
szablon=szablon..dodatkowe;
return Szablon(szablon,"[[","]]","LINKW",true,dalej);
else
return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej;
end;
else
return Szablon(szablon,"[[","]]","LINKW",true,dalej);
end;
end);
until (ile_linkw==0);
tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]",
function(szereg,numer,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"%["),1;
end,
function(szablon)
return Szablon(szablon,"[","]","LINKZ");
end);
repeat
tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}",
function(szereg,numer,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"%{%{%{"),3;
end,
function(szablon)
return Szablon(szablon,"{{{","}}}","ZMIENNA");
end);
until (ile_var==0);
tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}",
function(szereg,numer,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"%{%{"),2;
end,
function(szablon)
return Szablon(szablon,"{{","}}","SZABLON");
end);
tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}",
function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3);
end,
function(licznik_wzor,szablon)
if((czy_main)and(licznik_wzor==1))then
return Szablon(szablon,"{|","\n|}","WIKITABELA");
else
return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA");
end;
end,
function(wzor,numer_begin,czy)
if(czy_main)then
if(numer_begin==1)then return "^"..wzor,true;end;
return "\n"..wzor,false;
else
return "\n"..wzor,false;
end;
end);
until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0));
return tekst_artykulu;
end;
----
local ile_odjac_znacznik_niedomykajacy_0;
if(__FUNCTION_INCLUDE)then
tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc");
ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0;
----
tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="INCLUDE")then
local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul);
if(__FUNCTION_INCLUDE(nazwa))then
local function inc(zawartosc)
return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}")
or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}")
)and true or false;
end;
if(nazwa=="noinclude")then
if(poziom_iteracji==0)then
return (not inc(zawartosc)) and "" or zawartosc;
else
return zawartosc;
end;
elseif(nazwa=="includeonly")then
if(poziom_iteracji==0)then
return (not inc(zawartosc)) and zawartosc or "";
else
return "";
end;
end;
end;
end;
return nil,true;
end);
end;
----
local ile_odjac_znacznik_niedomykajacy_1;
tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne");
ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1;
----
tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true);
----
local ile_odjac_znacznik_niedomykajacy_2;
tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,"");
return tekst_artykulu;
end;
PREWSTAWIAJACA=function(tekst_artykulu)
czy_wynik=nil;
tekst_artykulu=PreprocesorSzablonow(tekst_artykulu);
tekst_artykulu=Kompilacja(tekst_artykulu);
czy_wynik=true;
return tekst_artykulu;
end;
tekst_artykulu=Kompilacja(tekst_artykulu)
local function PoczatekKoniecTekst(tekst_artykulu)
local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil);
local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil);
if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then
tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek;
tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec;
tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or "");
end;
return tekst_artykulu;
end;
tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu);
local function PraceKoncowe(tekst_artykulu)
tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true);
return tekst_artykulu;
end;
tekst_artykulu=PraceKoncowe(tekst_artykulu);
tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element);
tekst_artykulu=INNEPRE(tekst_artykulu);
tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul);
return tekst_artykulu;
end;
local function InicjujTabela()
if(not __FUNKCJA3)then
if(not __FUNKCJA4)then
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
end;
else
tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
else
if(__FUNKCJA4)then
tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
end;
local function UstawieniaPoczatkoweObiektowSzablonow()
if(not tablica_analizy_obiektow_strony_dany_modul)then
if((self.tablica_analizy_obiektow_strony_dany_modul)
and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])
)then
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];
numer_szablonu=self.numer_szablonu;
else
if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end;
if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end;
---
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];
---
InicjujNumeryPoczatkoweObiektowSzablonow();
self.numer_szablonu=numer_szablonu;
InicjujTabela();
end;
else
InicjujNumeryPoczatkoweObiektowSzablonow();
InicjujTabela();
end;
end;
----
UstawieniaPoczatkoweObiektowSzablonow();
---
local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod)
if(czy_tak)then
local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil;
local kod=tablica_szablon_obiekt and tonumber(kod) or nil;
if(kod)then
local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil;
if(not szablon_wynik)then
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE");
else
local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu);
return wynik;
end;
else
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE");
end;
else
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE");
end;
end);
return tekst_artykulu;
end;
tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true);
tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false);
tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu);
return tekst_artykulu;
end;
return p;
p9u8uj8575ru9c81aou9l7cqtijgykk
542689
542679
2026-05-12T07:20:23Z
Persino
2851
542689
Scribunto
text/plain
local p={};
function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst)
local szablonowe_modul=require("Module:Szablonowe");
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod)
return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod);
end);
return tekst;
end;
function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst)
local szablonowe_modul=require("Module:Szablonowe");
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod)
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end);
return tekst;
end;
function p.AtrybutyZnacznika(atrybuty,tab_element)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local tab_specjalne;
if(tab_element)then
atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod)
if(obiekt=="UCIECZKI")then
return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod);
end;
return szablon;
end);
else
tab_specjalne={};local ile=1;
atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny)
local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile);
tab_specjalne[wyraz]=wyraz_specjalny;
ile=ile+1;
return wyraz;
end);
end;
atrybuty=" "..atrybuty.." ";
local tab_atrybuty={};
while(true)do
local szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)");
if((not szablon)or(not name)or(not value))then break;end;
tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value));
szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon);
atrybuty=mw.ustring.gsub(atrybuty,szablon," ");
end;
while(true)do
local szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)");
if((not szablon)or(not name)or(not value))then break;end;
tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value);
szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon);
atrybuty=mw.ustring.gsub(atrybuty,szablon," ");
end;
while(true)do
local szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)");
if(not name)then break;end;
tab_atrybuty[name]=true;
name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon);
atrybuty=mw.ustring.gsub(atrybuty,name," ");
end;
local parametry_modul=require("Module:Parametry");
for name,value in pairs(tab_atrybuty) do
if(not parametry_modul.TypeBoolean(value))then
local value;local ile;
if(tab_element)then
value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod)
local szablon=(tab_element[obiekt] or {})[kod];
return szablon;
end);
else
value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz)
local wynik=tab_specjalne[wyraz];
return wynik;
end);
end;
if(ile>0)then
tab_atrybuty[name]=value;
end;
end;
end;
return tab_atrybuty;
end;
function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element)
local szablonowe_modul=require("Module:Szablonowe");
local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak)
nazwa=nazwa or "ATRYBUTY";
if(not tab_element[nazwa])then tab_element[nazwa]={};end;
tab_element[nazwa][#tab_element[nazwa]+1]=szablon;
local ile=#tab_element[nazwa];
if(not czy_tak)then
local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile);
return szablon_kod;
else
local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile);
return szablon_kod;
end;
end;
local function ZNAKI_UCIECZKI(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po)
local ile=#przed;
if(math.mod(ile,2)==0)then
szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true);
return szablon;
end;
return nil;
end);
return tekst_artykulu;
end;
local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow)
local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end);
if(math.mod(ile,2)==0)then
szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true);
return szablon1..szablon2..szablon3,true;
else
szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2)
__szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true);
return __szablon1..__szablon2;
end);
szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true);
return szablon1..szablon2..szablon3,false;
end;
end;
tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu);
local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor)
repeat
local ile_naprawy_znacznikow=nil;
local ile_naprawy_znacznikow_odejmnoc=0;
tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3)
local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow);
if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end;
return szablon;
end);
ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc;
until(ile_naprawy_znacznikow==0);
return tekst_artykulu;
end;
tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)");
local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile)
kod=tonumber(kod);
local szablon=(tab_element[obiekt] or {})[kod];
if(not szablon)then return nil;end;
local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
ile=ile+1;
return szablon_kodowy,ile;
end;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod)
if(obiekt~="UCIECZKI")then
local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0);
if(not szablon_kodowy)then return nil;end;
return szablon_kodowy;
end;
return nil;
end);
tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
local ile=0;
local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod)
if(obiekt~="UCIECZKI")then
local szablon_kodowy;
szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile);
if(not szablon_kodowy)then return nil;end;
return szablon_kodowy;
end;
return nil;
end);
if(ile==0)then return nil;end;
return true,szablon,obiekt,kod;
end);
tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod)
if(obiekt=="KOŃCOWE")then
return szablon;
end;
return nil,true;
end);
return tekst_artykulu,tab_element;
end;
function p.MetaTabelkaSzablonowe(__metatablica)
local tablica={};local __FUNKCJA;
__metatablica.UstawTablica=function(tablica_inna)
return function()
return tablica_inna or tablica;
end;
end;
__metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt)
__FUNKCJA=__FUNKCJA_start(obiekt);
end;
local fun_tablica=__metatablica.UstawTablica(tablica);
__metatablica.tablica=function()
return fun_tablica();
end;
__metatablica.__len=function(t)
return #fun_tablica();
end;
__metatablica.__index=function(t,klucz)
local tab=fun_tablica()[klucz];
if(tab==nil)then return nil;end;
return tab[1];
end;
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
__metatablica.__pairs=function(t)
return next,fun_tablica(),nil;
end;
local function iter(a,i)
i=i+1;
local v = a[i];
if v then
return i, v;
end
end
__metatablica.__ipairs=function(t)
return iter,fun_tablica(),0;
end;
end;
function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY)
local numer_szablonu;
local strony_modul=require("Module:Strony");
local szeregi_modul=require("Module:Szeregi");
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local szablonowe_modul=require("Module:Szablonowe");
local specjalne_modul=require("Module:Specjalne");
local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki;
local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego;
local function InicjujNumeryPoczatkoweObiektowSzablonow()
if(not __FUNKCJA3)then
numer_szablonu={};
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
numer_szablonu[obiekt]=1;
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
numer_szablonu[obiekt]=1;
end;
else
numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true;
local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co)
if(__FUNKCJA2)then
local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu);
if(wynik)then
numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1;
wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik;
return wynik,false;
end;
end;
if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end;
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]);
---
local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"];
local __metatablica=getmetatable(tab_co);
local czy_ustawiona_metatabelka=__metatablica and true or false;
if(not __metatablica)then
__metatablica={};
p.MetaTabelkaSzablonowe(__metatablica);
setmetatable(tab_co,__metatablica);
end;
local tablica_co=__metatablica.tablica();
local obiekt=co or "SZABLON";
if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then
__metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt);
end;
tablica_co[numer_szablonu[obiekt]]={szablon,false,};
---
numer_szablonu[obiekt]=numer_szablonu[obiekt]+1;
return kod,true;
end;
local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu)
local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2;
local techniczne_modul=require("Module:Techniczne");
local tab_licznik_poczatek={};
local tab_licznik_koniec={};
local tab_element={};
local ObiektFun=function(nazwa)
return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa]
or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil)
or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil);
end;
local INCLUDE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]")
end;
local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon)
local function INNEPREROZ(poczatek,koniec)
repeat
local ile;local ile2=0;
tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod)
if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then
kod=NiedokonczoneElementyWikikodu(kod);
local szablon=spacje..kod;
return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or "");
else
ile2=ile2+1;
end;
end);
ile=ile-ile2;
until (ile==0);
end;
if(not czy_poczt)then
INNEPREROZ(false,true);
INNEPREROZ(false,false);
end;
INNEPREROZ(true,true);
INNEPREROZ(true,false);
return tekst_artykulu;
end;
local tab_znaczniki={};
local tab_numerki={};
local function PreprocesorSzablonow(tekst_artykulu)
tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul);
local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po)
-----
if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end;
if(koniec=="")then
local nazwa=mw.ustring.lower(nazwa);
table.insert(tab_znaczniki,nazwa);
local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$");
if(koniec_samozamykajacy=="/")then
tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1;
end;
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end;
table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]);
local licznik=tab_licznik_poczatek[nazwa];
local szablon=nazwa..odstepy_przed..tekst..odstepy_po;
if(not tab_element)then tab_element={};end;
local typ=ObiektFun(nazwa);
if(not typ)then
return "<"..koniec..nazwa..odstepy_przed..tekst..odstepy_po..">";
end;
---
local czy_znacznik=(typ=="ZNACZNIK");
local czy_include=(typ=="INCLUDE");
local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil);
if(not jak)then return;end;
----
if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end;
tab_element[nazwa..jak][licznik]=szablon;
return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">";
else
local nazwa=mw.ustring.lower(nazwa);
tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1;
local licznik;
if(#tab_znaczniki>0)then
if(tab_znaczniki[#tab_znaczniki]~=nazwa)then
local koniec=0;
for i=#tab_znaczniki-1,1,-1 do
if(tab_znaczniki[i]==nazwa)then
koniec=i;
break;
end;
end;
if(koniec>0)then
licznik=tab_numerki[nazwa][#tab_numerki[nazwa]];
for i=koniec+1,#tab_znaczniki,1 do
tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1;
end;
for i=koniec,#tab_znaczniki,1 do
table.remove(tab_numerki[tab_znaczniki[i]]);
end;
for i=#tab_znaczniki,koniec,-1 do
table.remove(tab_znaczniki);
end;
else
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
licznik=tab_licznik_poczatek[nazwa];
end;
else
licznik=tab_numerki[nazwa][#tab_numerki[nazwa]];
table.remove(tab_numerki[nazwa]);
table.remove(tab_znaczniki);
end;
else
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
licznik=tab_licznik_koniec[nazwa];
end;
local szablon=nazwa..odstepy_przed..tekst..odstepy_po;
if(not tab_element)then tab_element={};end;
local typ=ObiektFun(nazwa);
if(not typ)then
return "<"..koniec..nazwa..odstepy_przed..tekst..odstepy_po..">";
end;
---
local czy_znacznik=(typ=="ZNACZNIK");
local czy_include=(typ=="INCLUDE");
local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil);
if(not jak)then return;end;
---
if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end;
tab_element[nazwa..jak][licznik]=szablon;
return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">";
end;
end);
return tekst_artykulu;
end;
tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true);
local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2)
tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,
function(linia)
local a;local b;
a=mw.ustring.match(linia,wzor1);
if(not a)then
a,b=mw.ustring.match(linia,wzor2);
if(not a)then return nil;end;
end;
if(b)then
b=ZnacznikiWiki(b,false,false);
return a..b;
else
a=ZnacznikiWiki(a,false,false);
return a;
end;
end);
return tekst_artykulu;
end;
----
tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$");
tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false);
----
local function AnalizujDomykajace(tekst_artykulu,jak,co)
local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod)
local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$");
nazwa=mw.ustring.lower(nazwa);
if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then
local szablon="<"..poczatek..nazwa_przed..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa));
end;
return nil;
end);
return tekst_artykulu;
end;
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin");
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin");
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end");
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end");
----
return tekst_artykulu;
end;
tekst_artykulu=PreprocesorSzablonow(tekst_artykulu);
local function Kompilacja(tekst_artykulu)
----
local ZamianaLINKWNaLINKZ=function(zawartosc,dalej)
local czy_url=strony_modul.SprawdzanieURL(zawartosc);
if(czy_url)then
local szablon="["..zawartosc.."]";
return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej;
else
if((dalej)and(dalej~=""))then
if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then
local szablon;
if(mw.ustring.match(zawartosc,"|"))then
szablon="[["..zawartosc..dalej.."]]";
else
local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*","");
szablon="[["..zawartosc.."|"..nazwa..dalej.."]]";
end;
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW");
end;
end;
local szablon="[["..zawartosc.."]]";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej;
end;
end;
local PracePrzygotowywujace;
NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main)
local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow)
repeat
local ile_znacznik_niedomykajacy;
local ile_znacznik_niedomykajacy_ujemny=0;
tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc)
local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
if(tablica_znacznikow)then
if(not tablica_znacznikow[nazwa_przed])then
ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1;
return nil;
end;
end;
zawartosc=INNEPRE(zawartosc,true);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$");
local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$")
or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$")
) and "\n" or "").."</"..nazwa..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK");
end);
ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny;
until (ile_znacznik_niedomykajacy==0);
repeat
local ile_znacznik_nieotwierajacy;
local ile_znacznik_nieotwierajacy_ujemny=0;
tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod)
local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element);
if(tablica_znacznikow)then
if(not tablica_znacznikow[nazwa_po])then
ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1;
return nil;
end;
end;
zawartosc=INNEPRE(zawartosc);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$");
local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n")
or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n")
) and "\n" or "")..zawartosc.."</"..nazwa_po..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK");
end);
ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny;
until (ile_znacznik_nieotwierajacy==0);
return tekst_artykulu;
end;
if(__FUNCTION_niedokonczone)then
local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element);
if(gdy_nie)then
if(czy_koniec)then return wynik or tekst_artykulu;end;
tekst_artykulu=wynik or tekst_artykulu;
tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu;
tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu;
return tekst_artykulu;
else
tekst_artykulu=wynik or tekst_artykulu;
end;
end;
local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu)
repeat
local ile_wikitabela_1;
tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$",
function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon)
return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3);
end,
function(licznik_wzor,poczatek,szablon)
szablon=INNEPRE(szablon,true);
szablon=NiedokonczoneElementyWikikodu(szablon);
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element);
return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA");
end,
function(wzor,licznik_wzor,czy)
if(czy_main)then
if(licznik_wzor==1)then return "^"..wzor,true;end;
return "\n"..wzor,false;
else
return "\n"..wzor,false;
end;
end);
until (ile_wikitabela_1==0);
repeat
local ile_wikitabela_2;
tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec)
szablon=INNEPRE(szablon);
szablon=NiedokonczoneElementyWikikodu(szablon);
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element);
return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA");
end);
until (ile_wikitabela_2==0);
return tekst_artykulu;
end;
local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne)
tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia)
local dodatnie=nil;
local a,b,c=mw.ustring.match(linia,wzor_dodatnie);
if((not a)or(not b)or(not c))then
a,b=mw.ustring.match(linia,wzor_ujemne);
if((not a)or(not b))then return nil;end;
c=nil;
else
dodatnie=true;
end;
if(dodatnie)then
b=DomykajaceIOdtwierajace(b,"");
return a..b..c;
else
b=DomykajaceIOdtwierajace(b,"");
return a..b;
end;
end);
return tekst_artykulu;
end;
---
tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne");
-----
local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$";
local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$";
tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne);
-----
---
--tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne");
tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"");
tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu);
return tekst_artykulu;
end;
local function ZNACZNIKI(tekst_artykulu,jak)
local ile_odjac_znacznik_niedomykajacy=0;
local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2)
local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$");
nazwa=mw.ustring.lower(nazwa);
local function TenZnacznik()
local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
if(jak=="")then
zawartosc=INNEPRE(zawartosc,true);
end;
local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa));
end;
local function InneZnacznik()
ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1;
local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">";
return szablon;
end;
if(not mw.ustring.match(atrybuty,"^%s*$"))then
if(odstepy~="")then
if((jak~="")and(jak~="inc"))then
return TenZnacznik();
end;
else
return InneZnacznik();
end;
else
if((jak~="")and(jak~="inc"))then
return TenZnacznik();
end;
end;
----
local ile_zastapione;local ile_pominiete;
zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak);
zawartosc=PracePrzygotowywujace(zawartosc);
zawartosc=INNEPRE(zawartosc,true);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
return TenZnacznik();
end);
return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy;
end;
----
PracePrzygotowywujace=function(tekst_artykulu,czy_main)
local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela;
local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej)
local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy;
zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,"");
zawartosc=PracePrzygotowywujace(zawartosc);
zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON"));
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
if(czy_linkw)then
return ZamianaLINKWNaLINKZ(zawartosc,dalej);
else
local szablon=przed..zawartosc..po;
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
end;
repeat
repeat
tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)",
function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej)
return mw.ustring.match(szablon,"%[%["),2;
end,
function(szablon,dodatkowe,dalej)
if(dodatkowe~="")then
local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$");
if(czy_linkz)then
szablon=szablon..dodatkowe;
return Szablon(szablon,"[[","]]","LINKW",true,dalej);
else
return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej;
end;
else
return Szablon(szablon,"[[","]]","LINKW",true,dalej);
end;
end);
until (ile_linkw==0);
tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]",
function(szereg,numer,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"%["),1;
end,
function(szablon)
return Szablon(szablon,"[","]","LINKZ");
end);
repeat
tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}",
function(szereg,numer,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"%{%{%{"),3;
end,
function(szablon)
return Szablon(szablon,"{{{","}}}","ZMIENNA");
end);
until (ile_var==0);
tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}",
function(szereg,numer,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"%{%{"),2;
end,
function(szablon)
return Szablon(szablon,"{{","}}","SZABLON");
end);
tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}",
function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon)
return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3);
end,
function(licznik_wzor,szablon)
if((czy_main)and(licznik_wzor==1))then
return Szablon(szablon,"{|","\n|}","WIKITABELA");
else
return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA");
end;
end,
function(wzor,numer_begin,czy)
if(czy_main)then
if(numer_begin==1)then return "^"..wzor,true;end;
return "\n"..wzor,false;
else
return "\n"..wzor,false;
end;
end);
until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0));
return tekst_artykulu;
end;
----
local ile_odjac_znacznik_niedomykajacy_0;
if(__FUNCTION_INCLUDE)then
tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc");
ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0;
----
tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="INCLUDE")then
local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul);
if(__FUNCTION_INCLUDE(nazwa))then
local function inc(zawartosc)
return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}")
or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}")
)and true or false;
end;
if(nazwa=="noinclude")then
if(poziom_iteracji==0)then
return (not inc(zawartosc)) and "" or zawartosc;
else
return zawartosc;
end;
elseif(nazwa=="includeonly")then
if(poziom_iteracji==0)then
return (not inc(zawartosc)) and zawartosc or "";
else
return "";
end;
end;
end;
end;
return nil,true;
end);
end;
----
local ile_odjac_znacznik_niedomykajacy_1;
tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne");
ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1;
----
tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true);
----
local ile_odjac_znacznik_niedomykajacy_2;
tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,"");
return tekst_artykulu;
end;
PREWSTAWIAJACA=function(tekst_artykulu)
czy_wynik=nil;
tekst_artykulu=PreprocesorSzablonow(tekst_artykulu);
tekst_artykulu=Kompilacja(tekst_artykulu);
czy_wynik=true;
return tekst_artykulu;
end;
tekst_artykulu=Kompilacja(tekst_artykulu)
local function PoczatekKoniecTekst(tekst_artykulu)
local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil);
local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil);
if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then
tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek;
tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec;
tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or "");
end;
return tekst_artykulu;
end;
tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu);
local function PraceKoncowe(tekst_artykulu)
tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true);
return tekst_artykulu;
end;
tekst_artykulu=PraceKoncowe(tekst_artykulu);
tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element);
tekst_artykulu=INNEPRE(tekst_artykulu);
tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul);
return tekst_artykulu;
end;
local function InicjujTabela()
if(not __FUNKCJA3)then
if(not __FUNKCJA4)then
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
tablica_analizy_obiektow_strony_dany_modul[obiekt]={};
end;
else
tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
else
if(__FUNKCJA4)then
tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
end;
local function UstawieniaPoczatkoweObiektowSzablonow()
if(not tablica_analizy_obiektow_strony_dany_modul)then
if((self.tablica_analizy_obiektow_strony_dany_modul)
and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])
)then
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];
numer_szablonu=self.numer_szablonu;
else
if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end;
if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end;
---
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];
---
InicjujNumeryPoczatkoweObiektowSzablonow();
self.numer_szablonu=numer_szablonu;
InicjujTabela();
end;
else
InicjujNumeryPoczatkoweObiektowSzablonow();
InicjujTabela();
end;
end;
----
UstawieniaPoczatkoweObiektowSzablonow();
---
local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod)
if(czy_tak)then
local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil;
local kod=tablica_szablon_obiekt and tonumber(kod) or nil;
if(kod)then
local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil;
if(not szablon_wynik)then
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE");
else
local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu);
return wynik;
end;
else
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE");
end;
else
return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE");
end;
end);
return tekst_artykulu;
end;
tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true);
tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false);
tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu);
return tekst_artykulu;
end;
return p;
8cyaoaaiqxmqzycgbgp6hesvwxar692
Wikipedysta:Persino/Gadget-DodatkiSubst.js/Strona.js
2
60541
542680
540668
2026-05-12T05:13:22Z
Persino
2851
542680
javascript
text/javascript
(function(mw,$){
var NumerSubst=new Array();
var DymkiSubst=new Array();
var SzablonSubst=new Array();
var StronaSubst=new Array();
var KategorieSubst=new Array();
/**/
var czy_nie_gconfig_numersubst=false;
var czy_nie_gconfig_dymkisubst=false;
var czy_nie_gconfig_szablonsubst=false;
var czy_nie_gconfig_stronasubst=false;
var czy_nie_gconfig_kategoriesubst=false;
/**/
NumerSubst.NumerowanieNaglowkow=function(){
/**/
var gadget_numerowanie_nie_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_normalne_nie_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej=undefined;
/**/
var gadget_numerowanie_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_normalne_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej=undefined;
/**/
var gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var gadget_numerowanie_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_numersubst){
czy_nie_gconfig_numersubst=true;
mw.messages.set({
'NumerSubst-name': 'Numerowanie nagłówków',
'NumerSubst-description-page': 'Wikibooks:StronicowyParser',
'NumerSubst-numerowanie_nie_na_stronie_zbiorczej': 'Włącz numerowanie nagłówków nie na stronie zbiorczej.',
'NumerSubst-numerowanie_normalne_nie_na_stronie_zbiorczej': "Włącz numerowanie, bez prefiksów, nagłówków nie na stronie zbiorczej.",
'NumerSubst-numerowanie_asynchroniczne_nie_na_stronie_zbiorczej': "Sprawdza, czy na stronie niezbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'NumerSubst-numerowanie_na_stronie_zbiorczej': 'Włącz numerowanie nagłówków na stronie zbiorczej.',
'NumerSubst-numerowanie_normalne_na_stronie_zbiorczej': "Włącz numerowanie, bez prefiksów, nagłówków na stronie zbiorczej.",
'NumerSubst-numerowanie_asynchroniczne_na_stronie_zbiorczej': "Sprawdza, czy na stronie zbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'NumerSubst-numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'NumerSubst-numerowanie_zapisz_dane_na_kliencie':'Zapisuje dane, co do numerowania rozdziałów i artykułówna kliencie',
});
gConfig.register('NumerSubst', {name: mw.msg('NumerSubst-name'), descriptionPage: mw.msg('NumerSubst-description-page')}, [
{
name: 'numerowanie_nie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_nie_na_stronie_zbiorczej']
},
{
name: 'numerowanie_normalne_nie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_normalne_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_NumerSubst-numerowanie_normalne_nie_na_stronie_zbiorczej']
},
{
name: 'numerowanie_asynchroniczne_nie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_asynchroniczne_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_asynchroniczne_nie_na_stronie_zbiorczej']
},
{
name: 'numerowanie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_na_stronie_zbiorczej']
},
{
name: 'numerowanie-normalne_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_normalne_na_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_NumerSubst-numerowanie_normalne_na_stronie_zbiorczej']
},
{
name: 'numerowanie_asynchroniczne_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_asynchroniczne_na_stronie_zbiorczej'),
type: 'boolean',
deflt:true,
legacy: [window, 'wb_NumerSubst-numerowanie_asynchroniczne_na_stronie_zbiorczej']
},
{
name: 'numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'numerowanie_zapisz_dane_na_kliencie',
desc: mw.msg('NumerSubst-numerowanie_zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_NumerSubst-numerowanie_zapisz_dane_na_kliencie']
},
]);
}
gadget_numerowanie_nie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_nie_na_stronie_zbiorczej')==true);
gadget_numerowanie_normalne_nie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_normalne_nie_na_stronie_zbiorczej')==true);
gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_asynchroniczne_nie_na_stronie_zbiorczej')==true);
/**/
gadget_numerowanie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_na_stronie_zbiorczej')==true);
gadget_numerowanie_normalne_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_normalne_na_stronie_zbiorczej')==true);
gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_asynchroniczne_na_stronie_zbiorczej')==true);
/**/
gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(gConfig.get('NumerSubst','numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
gadget_numerowanie_zapisz_dane_na_kliencie=(gConfig.get('NumerSubst','numerowanie_zapisz_dane_na_kliencie')==true);
}
gadget_numerowanie_nie_na_stronie_zbiorczej=(gadget_numerowanie_nie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_nie_na_stronie_zbiorczej:true;
gadget_numerowanie_normalne_nie_na_stronie_zbiorczej=(gadget_numerowanie_normalne_nie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_normalne_nie_na_stronie_zbiorczej:false;
gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej=(gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej:true;
/**/
gadget_numerowanie_na_stronie_zbiorczej=(gadget_numerowanie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_na_stronie_zbiorczej:true;
gadget_numerowanie_normalne_na_stronie_zbiorczej=(gadget_numerowanie_normalne_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_normalne_na_stronie_zbiorczej:false;
gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej=(gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej:true;
/**/
gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!==undefined)?gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true;
gadget_numerowanie_zapisz_dane_na_kliencie=(gadget_numerowanie_zapisz_dane_na_kliencie!==undefined)?gadget_numerowanie_zapisz_dane_na_kliencie:false;
/**/
var this_zmienna=this;
/**/
/**/
this.UstalanieZmiennychNumerowanieNapisoweWprowadzeniaTekstu=function(aktualna_strona,element){
var funkcja=function(){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
if(wikikod){
var gadget_numerowanie=gadget_numerowanie_na_stronie_zbiorczej;
var gadget_numerowanie_normalne=gadget_numerowanie_normalne_na_stronie_zbiorczej;
var gadget_numerowanie_asynchroniczne=gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej;
}else{
var gadget_numerowanie=gadget_numerowanie_nie_na_stronie_zbiorczej;
var gadget_numerowanie_normalne=gadget_numerowanie_normalne_nie_na_stronie_zbiorczej;
var gadget_numerowanie_asynchroniczne=gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej;
}
return Promise.resolve([gadget_numerowanie,gadget_numerowanie_normalne,gadget_numerowanie_asynchroniczne]);
});
};
if(gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
return Promise.resolve([false,false,false]);
}
});
}else{
return funkcja();
}
}
var promise_numerowanie=this.UstalanieZmiennychNumerowanieNapisoweWprowadzeniaTekstu();
var tab_promise_numerowanie=new Array();
tab_promise_numerowanie.push(promise_numerowanie);
var this_zmienna=this;
//gadget_numerowanie=((gadget_numerowanie!==undefined)?gadget_numerowanie:true);
var UstalanieZmiennychNumerowanie=function(aktualna_strona,element,funkcja){
var gadget_numerowanie;var gadget_numerowanie_normalne;var gadget_numerowanie_asynchroniczne;
return promise_numerowanie.DodatkiSkryptThen(function(data){
gadget_numerowanie=data[0];gadget_numerowanie_normalne=data[1];gadget_numerowanie_asynchroniczne=data[2];
if(gadget_numerowanie_asynchroniczne){
if(aktualna_strona){
tab_promise_numerowanie.push(this_zmienna.UstalanieZmiennychNumerowanieNapisoweWprowadzeniaTekstu(aktualna_strona,element));
promise_numerowanie=tab_promise_numerowanie.at(-1);
return promise_numerowanie;
}
}
return data;
}).DodatkiSkryptThen(function(data){
return funkcja(data,aktualna_strona,element);
}).DodatkiSkryptFinally(function(data){
if(gadget_numerowanie_asynchroniczne){
if(aktualna_strona){
tab_promise_numerowanie.pop();
promise_numerowanie=tab_promise_numerowanie.at(-1);
}
}
return data;
});
}
/**/
this.NumerowanieNaglowkowStronZObiektami=function(id_numerowanie,prefix){
var fun_hnumer=DodatkiSkrypt.Szereg.HNumer.LiczonyHNumer();
var numeracja=new Array();
var czy_numerowac=false;
var p=false;
var stare_fun_hnumer;
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
$(id_numerowanie).find(hn).not(toc_h).DodatkiSkryptEach(function(i,h_element){
/**/
var div_element=$(h_element).closest('.mw-heading');
var element=($(div_element).length>0)?$(div_element):$(h_element);
var szablon_spec=$(element).parents('.strona_start').first();
var szablon_spec_w_drzewie=$(id_numerowanie).find(szablon_spec);
if((szablon_spec.length>0)&&(szablon_spec_w_drzewie.length>0)){return;}
/**/
var CzyTak=function(klasa1,not_klasa2){
var str_elements=$(element).parents(klasa1);
if(not_klasa2){
str_elements=$(str_elements).not(not_klasa2);
}
if(($(str_elements).length>0)
&&(($(str_elements).filter(id_numerowanie).length==0)
&&($(str_elements).find(id_numerowanie).length==0)
)
){return true;}
return false;
}
var tak=CzyTak('.rodzic_szablon_subst_js');if(tak){return;};
var tak=CzyTak('.artykułsubst');if(tak){return;};
var tak=CzyTak('.klasa_książki');if(tak){return;};
var tak=CzyTak('.rozdział_książki','.klasa_książki > .klasa_nagłówka > .rozdział_książki');if(tak){return;};
/**/
var szablon=$(element).find('.mw-numbering-main-page, .numeracja');
if(szablon.length>0){return;};
czy_numerowac=true;
var hn_element=$(h_element).not(toc_h).first().get(0);
var poziom_naglowka=DodatkiSkrypt.Szereg.HNumer.PoziomNapisuWprowadzeniaTekstu(hn_element);
var numer=fun_hnumer(poziom_naglowka);
var czy_ponumerowany=$(element).children('.numeracja');
if(numeracja.length<numer){numeracja.push(1);}
else if(numeracja.length>numer){numeracja=numeracja.slice(0,numer);numeracja[numer-1]+=parseInt(1);}
else if(numeracja.length==numer){numeracja[numer-1]+=parseInt(1);};
if(czy_ponumerowany.length==0){
var span=document.createElement('span');
span.setAttribute('class',"numeracja");
$(span).html(((prefix!=="")?(prefix+"."):"")+numeracja.join('.')+". ");
var child=$(element).contents().first();
if($(child).length>0){
$(child).before(span);
}else{
$(element).append(span);
}
}else{
$(czy_ponumerowany).first().html(((prefix!=="")?(prefix+"."):"")+numeracja.join('.')+". ");
}
});
return czy_numerowac;
}
this.NumerowanieNaglowkowStron=function(id_numerowanie,prefix,czy_bez_prefix){
return promise_numerowanie.DodatkiSkryptThen(function(data){
var gadget_numerowanie=data[0];var gadget_numerowanie_normalne=data[1];var gadget_numerowanie_asynchroniczne=data[2];
if(!gadget_numerowanie){return;}
if(!czy_bez_prefix){prefix="";};
var tab_promise=new Array();
var czy_numerowac=this_zmienna.NumerowanieNaglowkowStronZObiektami(id_numerowanie,prefix);
var strona_start=$(id_numerowanie).find('.strona_start');
if(strona_start.length>0){
for(var i=0;i<strona_start.length;++i){
var artykulsubst=$(strona_start[i]).find(".artykułsubst");
var obiekt;
if(artykulsubst.length>0){
obiekt=$(artykulsubst).find('.zawartość')[0];
}else{
obiekt=$(strona_start[i]).find('.ciało_strona')[0];
}
if(obiekt){
var prefix2=((strona_start.length==1)?((!czy_numerowac)?prefix:""):"");
if(prefix2!=""){
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,prefix2,czy_bez_prefix);
tab_promise.push(promise);
}else if(artykulsubst.length>0){
var str_adres=$(artykulsubst).find('.adres');
if((str_adres.length>0)&&(obiekt!=null)){
if(!gadget_numerowanie_normalne){
var adres=$(str_adres[0]).html().trim();
var artykul=DodatkiSkrypt.Nazwy.ARTICLENAME(adres);
var aktualna_strona=DodatkiSkrypt.Nazwy.FULLPAGENAME(adres);
var promise=UstalanieZmiennychNumerowanie(aktualna_strona,id_numerowanie,function(data_promise_numerowanie,aktualna_strona,id_numerowanie){
return this_zmienna.PreparujStronyJednostek(obiekt,artykul,aktualna_strona,true).DodatkiSkryptThen(function(){
return this_zmienna.NumerowanieNaglowkowStron(obiekt,"");
});
});
tab_promise.push(promise);
}else{
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,"",czy_bez_prefix);
tab_promise.push(promise);
}
}else{
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,"",czy_bez_prefix);
tab_promise.push(promise);
}
}else{
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,"",czy_bez_prefix);
tab_promise.push(promise);
}
}
}
}
return Promise.DodatkiSkryptAll(tab_promise);
});
}
this.FunkcjaZdarzenStronyGlownejPodrecznika=function(){
}
this.NumerowanieStronGłównychPodręcznikowWedlugZebranychDanych=function(id_numerowanie,json,aktualna_strona){
var JSONDane=function(json,numer_porzadkowy){
for(var rozdzial in json){
var tab_rozdzial=json[rozdzial];
for(var numer_rozdzialu in tab_rozdzial){
var tab_numer_rozdzial=tab_rozdzial[numer_rozdzialu];
for(var artykul in tab_numer_rozdzial){
var tab_artykul=tab_numer_rozdzial[artykul];
for(var numer_artykulu in tab_artykul){
var tab_numer_artykulu=tab_artykul[numer_artykulu];
for(var i in tab_numer_artykulu){
var tab_i=tab_numer_artykulu[i];
if(tab_i["numer"]==numer_porzadkowy){
var czy_podreczniku=tab_i["czy w podręczniku"];
var czy_url=!!(tab_i["url"]);
var zebrane_dane={
"rozdział":DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(rozdzial)))),
"numer rozdziału":numer_rozdzialu,
"artykuł":(((!czy_podreczniku)&&(!czy_url))?(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(artykul))))):(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(artykul))))),
"numer artykułu":numer_artykulu,
"link":((tab_i["link"])?(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["link"])))):undefined),
"przekierowanie":((tab_i["przekierowanie"]!==undefined)?
((!czy_podreczniku)?(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["przekierowanie"]))))):(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["przekierowanie"]))))):undefined),
"pełna nazwa książki":((tab_i["pełna nazwa książki"]!=undefined)?
(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["pełna nazwa książki"]))))):undefined),
"kod języka":tab_i["kod języka"],
"kod projektu":tab_i["kod projektu"],
"nazwa":((tab_i["nazwa"]!==undefined)?(DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(tab_i["nazwa"]))))):undefined),
"spis treści":tab_i["spis treści"],
"dodane":tab_i["dodane"],
"czy w podręczniku":czy_podreczniku,
"inna książka":tab_i["inna książka"],
"url":czy_url,
};
return zebrane_dane;
}
}
}
}
}
}
return null;
}
/**/
var przestrzenie_alternatywne={
"w":"wikipedia",
"b":"wikibooks",
"wikt":"wiktionary",
"q":"wikiquote",
"s":"wikisource",
"voy":"wikivoyage",
"n":"wikinews",
"v":"wikiversity",
};
var PrzestrzenStrony=function(klucz,tabela, czy_klucz){
klucz=klucz.toLowerCase();
var projekt=tabela[klucz];
if(projekt){return czy_klucz?klucz:projekt;}
for(p in tabela){
var projekt=tabela[p];
if(projekt){
var projekt_data=(typeof(projekt)=="object")?projekt[0]:projekt;
projekt_data=projekt_data.toLowerCase();
if(projekt_data==klucz){
return czy_klucz?p:projekt;
}
}
}
return undefined;
}
var przestrzenie_poza={
"foundation":"wikimedia",
"commons":"wikimedia",
"species":"wikimedia",
"meta":"wikimedia",
"mw":["mediawiki","www",],
"d":["wikidata","www",],
"f":["wikifunctions","www",],
};
/**/
var LiczbaElementowaTablicowaJson=function(){
for(var numer_porzadkowy=1;;++numer_porzadkowy){
var element_json=JSONDane(json,numer_porzadkowy);
if(element_json===null){
return Math.max(numer_porzadkowy-1,0);
}
}
return 0;
}
var FunctionNumeracja=function(p){
var i_begin=0;
var max_i_begin=1;
var j=1;
var f=0;
var k=-1;
var dane;var yes=true;
var CzyPomijanieElementoweSpisuRzeczy=function(element,pierwsze_dziecko,j,tekst){
//console.log("BADANIE ELEMENTU:",element,element.outerHTML,tekst)
var tak=(
(j>1)
&&($(element).parents('div.center, div.mw-heading').find('.mw-numbering-main-page').length==0)
&&($(element).closest('.ambox, .tmbox, .fmbox, .ombox, .dmbox, .npm, .wm').length==0)
&&(!/^\s*$/g.test($(element).text()))
&&($(element).not('a').length==0)
&&(!/^\s*\-\s*/g.test($(element).closest('td,th').text()))
&&($(element).closest('.noprint').length==0)
&&(($(element).closest("p").length==0)||(/^[^\n]*:[^\S\n]*$/g.test(tekst)))
&&(!pierwsze_dziecko)
&&(!DodatkiSkrypt.Szereg.Html.Float(element))
&&($(element).filter('.mw-file-description').length==0)
&&($(element).closest("[typeof=\"mw:File\"]").length==0)
&&($(element).closest('.reference').length==0)
&&($(element).closest('.toc_artykuł').length==0)
&&($(element).filter("a.mw-selflink.selflink").length==0)
&&(!(
($(element).filter("a:not(.mw-selflink):not(.selflink)").length>0)
&&(
(/^([Oo]k[łl]adka|[Ww]ersja_do_druku|[Ww]ersja_do_czytania)$/g.test(tekst))
)
))
)
console.log("BADANIE ELEMENTU:",element,element.outerHTML,tekst,tak);
return tak;
}
var RozdzialBezNumeracji=function(tekst){
var czy=/^[\d\.]+\s+/g.test(tekst)||/^[\d\.]+\s*$/g.test(tekst);
if(czy){
var num=tekst.match(/^([\d\.]+)/g).toString();
var tab=num.split(".");
if(tab.length==1){
if(/^\d+$/g.test(num)){
return tekst;
}
}else{
console.log(tab,tekst,"_____________________________________")
if(tab[tab.length-1]==""){tab.splice(tab.length-1,1);};
}
var tak=true;
for(var i=0;i<tab.length;++i){
tak=tak&&(/^\d+$/g.test(tab[i]));
if(!tak){break;};
}
if(tak){
tekst=tekst.replace(/^[\d\.]+\s*/g,"");
}
}
return tekst;
}
var OperacjeNaTestowychElementach=function(element){
var iterator=DodatkiSkrypt.Szereg.Html.IteratorPotomkowyPoElemencieHtml(element)
var __element;
do{
__element=iterator();
console.log(__element,"TYTAN0123")
if(__element){
if(!__element.tagName){
if($(__element).closest(".mw-numbering-main-page").length>0){continue;}
var text=__element.nodeValue;
text=RozdzialBezNumeracji(text);
console.log(text,"TYTAn0000000",__element.nodeValue)
text=text.replace(/^\d+\s+/g,"");
text=text.replace(/^\s*[IVXL]+\s+/g,"");
text=text.replace(/\s*\([0-9a-zA-Z]+\)\s+/g,"")
__element.nodeValue=text;
break;
}
}
}while(__element);
}
var roznica_spis_tresci=0;
var Numerowanie=function(element,tag,tekst,pierwsze_dziecko,nazwa,czy_edit){
dane=((yes)||(!dane))?JSONDane(json,j):dane;
if(dane===null){return;}
var Numer=function(dane){
var numer_rozdzialu=dane["numer rozdziału"];
var numer_artykulu=dane["numer artykułu"];
var numer=((numer_rozdzialu!="")&&(numer_artykulu!=""))?(numer_rozdzialu+"."+numer_artykulu):((numer_rozdzialu)?numer_rozdzialu:numer_artykulu);
if(numer==""){return null;}
numer="("+numer+") ";
return numer;
}
if(dane["dodane"]){
yes=true;
++j;
dane=((yes)||(!dane))?JSONDane(json,j):dane;
if(dane==null){return;}
}
var spis_tresci;var rozdzial;var artykul;var przekierowanie;var numer_rozdzialu;var numer_artykulu;
var fun_pozycja=function(){
spis_tresci=dane["spis treści"];
rozdzial=dane["rozdział"];
artykul=dane["artykuł"];
przekierowanie=dane["przekierowanie"];
numer_rozdzialu=dane["numer rozdziału"];
numer_artykulu=dane["numer artykułu"];
}
fun_pozycja();
mw.log(rozdzial,"TYTAn123")
if((spis_tresci===undefined)&&(rozdzial=="Spis treści")&&(numer_rozdzialu=="")&&(artykul=="")&&(numer_artykulu=="")){
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
}
console.log(rozdzial,spis_tresci,numer_rozdzialu,artykul,numer_artykulu,"TYTAn1231");
if((spis_tresci==undefined)&&(rozdzial=="Główny spis treści")&&(numer_rozdzialu=="")&&(artykul=="")&&(numer_artykulu=="")){
console.log("TYTAn1232")
roznica_spis_tresci+=0;
console.log("TYTAN1233")
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
}else{
var spis_fullname=DodatkiSkrypt.Nazwy.ARTICLENAME(DodatkiSkrypt.Info.page.fullname);
var rozdzial_temp="Spis treści - "+spis_fullname;
spis_fullname=spis_fullname.replace(/[\s_]/g,"_");
console.log(rozdzial,rozdzial_temp,numer_rozdzialu,artykul,numer_artykulu,DodatkiSkrypt.Info.page.fullname,"TYTAN76979")
if((rozdzial==rozdzial_temp)&&(numer_rozdzialu!="")&&(artykul=="")&&(numer_artykulu=="")){
console.log("TYTAN1234")
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
console.log(rozdzial,rozdzial_temp,numer_rozdzialu,artykul,numer_artykulu,spis_fullname,DodatkiSkrypt.Info.page.fullname,"TYTANbbbbb")
if((rozdzial==rozdzial_temp)&&(numer_rozdzialu!="")&&(artykul==spis_fullname)&&(numer_artykulu=="")){
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
}
}
}
var NumerujLinki=function(dane,czy_a,tag){
var numer=Numer(dane);
if(!numer){return;};
var tak=false;
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var h_element=$(element).closest(hn).not(toc_h);
var element_heading=$(h_element).closest('div.mw-heading');
var hn_element=(($(element_heading).length>0)?$(element_heading):$(h_element));
var element_naglowek=(($(hn_element).length>0)?$(hn_element):($(element).closest('div.center')));
$(element_naglowek).DodatkiSkryptEach(function(i,element){
$(element).find('> .mw-numbering-main-page, > .link > .mw-numbering-main-page').DodatkiSkryptEach(function(i,element){
if($(element).html()==numer){tak=true;}
});
});
$($(element).parent()).filter('div.template-center').find(' > div').DodatkiSkryptEach(function(i,element){
$(element).find('> .mw-numbering-main-page, > .link > .mw-numbering-main-page').DodatkiSkryptEach(function(i,element){
if($(element).html()==numer){tak=true;}
});
});
if(tak){return;};
var span=document.createElement('span');
$(span).addClass('mw-numbering-main-page');
$(span).html(numer);
/*if((tag)||(tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6")){
element2=$(element).parent();
if(element2.length>0){element=element2[0];};
}*/
if(!czy_a){
$(element).before(span);
}else{
var if_dziecko=(pierwsze_dziecko)?pierwsze_dziecko:element.firstChild;
if(if_dziecko){
$(if_dziecko).before(span);
}else{
$(element).append(span);
}
}
$(element).closest('li').parents("ul, ol").filter(".mw-parser-output ul, .mw-parser-output ol").DodatkiSkryptEach(function(i,element){
$(element).addClass('css_numersubst');
});
}
if(tag=="A"){
tekst=DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tekst)));
var czy_poza=(!dane["czy w podręczniku"]);
var kod_jezyka=dane["kod języka"];var kod_projektu=dane["kod projektu"];
var link=dane["link"];
var czy_url=dane["url"];
//var link2=link?link.replace(new RegExp("^[:%s_]*"+kod_jezyka+"[%s_:]*:"),"").replace(new RegExp("^[:%s_]*"+kod_projektu+"[%s_:]*:"),""):link;
//link2=link2?link2.replace(new RegExp("^[:%s_]*"+kod_projektu+"[%s_:]*:"),"").replace(new RegExp("^[:%s_]*"+kod_jezyka+"[%s_:]*:"),""):link2;
console.log("TYTAN0",przekierowanie);
if(((artykul!="")&&(numer_artykulu!=""))&&(spis_tresci==undefined)&(czy_poza)&&(((kod_jezyka!=null)&&(kod_jezyka!=""))||((kod_projektu!=null)&&(kod_projektu!=""))||czy_url)&&(link)&&(!((kod_jezyka=="pl")&&(kod_projektu=="b")&&(/^([\s_]*:[\s_]*(?i:pl)){1,}[\s_]*:[\s_]*(?!(?i:b)[\s_]*:)/g.test(link))))/*&&(((kod_projektu=="url")&&(artykul==link))||(link2==(przekierowanie||artykul)))*/){
console.log(czy_url,tekst,"TYTAN123");
if(!czy_url){
var nazwa=dane["nazwa"];
link=link.replace(/^\s*:/g,"");
var klucz=link.match(/^([^:]*):/);
if(klucz==null){
klucz=((kod_jezyka=="pl")?kod_projektu:((kod_projektu=="b")?kod_jezyka:kod_projektu));
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
if(kod_jezyka=="pl"){
link=((kod_projektu!=klucz)?(kod_projektu+":"):"")+link;
}else if(kod_projektu=="b"){
link=klucz_jezyka+":"+link;
}
var artykul_z_kodami=DodatkiSkrypt.Szereg.Styl.PoprawMianoNazwyStrony(link);
}else{
console.log(klucz,"TYTAn")
klucz=klucz[1];
klucz=klucz.toLowerCase();
if(klucz=="pl"){
do{
link=link.replace(/^([^:]*):/,"");
klucz=link.match(/^([^:]*):/);
if(klucz){
klucz=klucz[1];
klucz=klucz.toLowerCase();
}
}while(klucz=="pl");
}
if(link!=(przekierowanie||artykul)){
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
var artykul_z_kodami=link.replace(/^([^:]*:)(.*)$/g,function(s,a,b){
return DodatkiSkrypt.Szereg.Styl.PoprawMianoNazwyStrony(b);
});
}else{
klucz=kod_jezyka;
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
link=kod_projektu+":"+link;
var artykul_z_kodami=DodatkiSkrypt.Szereg.Styl.PoprawMianoNazwyStrony(link);
}
}
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
var href;
if(projekt){
var czy_prze=przestrzenie_alternatywne[klucz];
href="//"+((klucz!="b")?(czy_prze?"pl":'en'):"en")+"."+projekt+".org/wiki/"+artykul_z_kodami;
}else{
kod_projektu=link.match(/^[\s_]*(?::[\s_]*)?[^\s:]+[\s_]*:[\s_]*([^\s:]+)[\s_]*:/)[1];
var Href=function(klucz,artykul_z_kodami){
var klucz_tabela=PrzestrzenStrony(klucz,przestrzenie_poza);
var przed_poza;
if(klucz_tabela){
if(typeof(klucz_tabela)=="object"){
klucz_poza=klucz_tabela[0];
przed_poza=klucz_tabela[1];
}else{
klucz_poza=klucz_tabela;
}
}
klucz=PrzestrzenStrony(klucz,przestrzenie_poza,true)||klucz;
if(!przestrzenie_poza[klucz]){
href="//"+((klucz!="b")?klucz:"en")+".wikibooks.org/wiki/"+artykul_z_kodami;
}else{
href="//"+(przed_poza||klucz)+"."+klucz_poza+".org/wiki/"+artykul_z_kodami;
}
return href;
}
if((!kod_projektu)||((klucz!="pl")&&(PrzestrzenStrony(kod_projektu,przestrzenie_alternatywne)))){
href=Href(klucz,artykul_z_kodami);
}else{
var projekt=PrzestrzenStrony(kod_projektu,przestrzenie_alternatywne);
if((klucz=="pl")&&(projekt)){
artykul_z_kodami=artykul_z_kodami.replace(/^[\s_]*(?::[\s_]*)?[^\s:]+[\s_]*:/g,"");
href="//"+((kod_projektu!="b")?klucz:"en")+"."+projekt+".org/wiki/"+artykul_z_kodami;
console.log(href,klucz,projekt,"MAMUT123");
}else{
href=Href(klucz,artykul_z_kodami);
}
}
}
if(href==tekst.replace(/^https?:/gi,"")){
NumerujLinki(dane,false,tag);
yes=true;
++j;
}else{
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
console.log(element.outerHTML,tekst,"ABC1",f);
++f;
}
if(j<=max_i_begin){++i_begin;console.log(tekst,"A",i_begin);};
};
}else{
if(link.replace(/^https?:\/\//gi,"")==tekst.replace(/^https?:\/\//gi,"")){
NumerujLinki(dane,false,tag);
yes=true;
++j;
}else{
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
console.log(element.outerHTML,tekst,"ABC2",f);
f++;
}
if(j<=max_i_begin){++i_begin;console.log(tekst,"B",i_begin);};
}
}
//});
}else{
var pelna_nazwa_ksiazki=dane["pełna nazwa książki"];
var nazwa_artykulu=dane["nazwa"];
var inna_ksiazka=dane["inna książka"];
/**/
var artykul_edit;var przekierowanie_edit;
if(czy_edit){
artykul_edit=artykul.replace(/^([^#]*)#(.*)$/g,"$1");
artykul_edit=artykul_edit.replace(/^(.*)\?\s*\a+[\a\s]*=.*$/g,"$1");
if(przekierowanie){
przekierowanie_edit=przekierowanie.replace(/^([^#]*)#(.*)$/g,"$1");
przekierowanie_edit=przekierowanie_edit.replace(/^(.*)\?\s*\a+[\a\s]*=.*$/g,"$1");
}
}
/**/
var nazwa=DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(nazwa))));
tekst=((czy_poza)?(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(tekst)):tekst);
console.log("TYTAN1",spis_tresci,artykul,numer_artykulu,czy_edit,tekst,nazwa_artykulu,pelna_nazwa_ksiazki,czy_poza)
if(/^\/\/upload\.wikimedia\.org\/[^\/]+\/[^\/]+\/2\/2a\//g.test(tekst)){
tekst=(tekst.match(/^\/\/upload\.wikimedia\.org\/[^\/]+\/[^\/]+\/2\/2a\/(.*)$/)[1].toString())||tekst;
tekst="Media:"+tekst;
}else if(/^\/\/commons\.wikimedia\.org\/wiki\/Special\:UploadWizard\?uselang\=pl\&wpDestFile\=/g.test(tekst)){
tekst=(tekst.match(/^\/\/commons\.wikimedia\.org\/wiki\/Special\:UploadWizard\?uselang\=pl\&wpDestFile\=(.*)$/)[1].toString())||tekst;
tekst="Media:"+tekst;
}
console.log(spis_tresci,artykul,numer_artykulu,inna_ksiazka,czy_edit,czy_poza,tekst,"PPPPPPPPPPPPP123",nazwa,nazwa_artykulu,nazwa==nazwa_artykulu)
if((spis_tresci==undefined)&&((artykul!="")||(numer_artykulu!=""))
&&(
((!inna_ksiazka)&&((!pelna_nazwa_ksiazki)||(!czy_poza)))
?((((!czy_edit)?(pelna_nazwa_ksiazki?artykul:przekierowanie):(pelna_nazwa_ksiazki?artykul_edit:przekierowanie_edit))||przekierowanie||artykul)==tekst)
:(
(
(pelna_nazwa_ksiazki?(pelna_nazwa_ksiazki+"/"):"")
+(((!czy_edit)?(inna_ksiazka?przekierowanie:artykul):(inna_ksiazka?przekierowanie_edit:artykul_edit))||przekierowanie||artykul)
)==tekst
)
)&&((!nazwa_artykulu)||(nazwa==nazwa_artykulu))
){
console.log("TYTAN2");
NumerujLinki(dane,false,tag);
/**/
$(element).parents('dd, li, span:not(.link), b, i, p').first().DodatkiSkryptEach(function(i,element){
OperacjeNaTestowychElementach(element);
});
/**/
$(element).parents('div.toc_ogólnie_spis.toc_artykuł').find('a > span.tocnumber').DodatkiSkryptEach(function(i,element){
var numer_toc=$(element).html();
var numer=numer_rozdzialu+(((numer_rozdzialu!="")&&(numer_artykulu!=""))?("."+numer_artykulu):numer_artykulu);
numer=numer+(((numer!="")&&(numer_toc!=""))?("."+numer_toc):numer_toc);
$(element).html(numer);
});
yes=true;
++j;
}else{
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
++f;
}
if(j<=max_i_begin){++i_begin;};
}
}
}else{
tekst=DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(tekst)));
//rozdzial=DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(rozdzial);
tekst=RozdzialBezNumeracji(tekst);
tekst=DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(tekst);
var spis_tresci_temp=spis_tresci-roznica_spis_tresci;
console.log(rozdzial,tekst,spis_tresci,numer_artykulu,tag,"TYTAN111111111111");
if((rozdzial==tekst)&&((artykul=="")&&(numer_artykulu==""))&&(tag)&&(spis_tresci!=undefined)&&(((spis_tresci_temp>0)&&((((tag=="DIV")&&(($(element).hasClass('mw-heading'))||($(element).parent().hasClass('template-center'))||($(element).hasClass('center'))))/*||($(element).parents('.center,center').length>0)*/||(tag=="CENTER"))||((tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6"))))||((spis_tresci<0)&&(/*($(element).parents('li, dd').length>0)||*/(tag=="DD")||(tag=="LI")||(tag=="DT")))||((spis_tresci==0)&&(/*($(element).parents('p,i,b').length>0)||*/(tag=="P")||(tag=="I")||(tag=="B")||(tag=="CENTER")||(tag=="TD")||(tag=="TH")||(tag=="CAPTION"))))){
NumerujLinki(dane,true,tag);
console.log(element,tekst,"GGG1")
$(element).DodatkiSkryptEach(function(i,element){
OperacjeNaTestowychElementach(element);
});
yes=true;
++j;
}else{
yes=false;
var warunek=((tag)&&((((((tag=="DIV")&&(($(element).hasClass('mw-heading'))||($(element).parent().hasClass('template-center'))||($(element).hasClass('center'))))/*||($(element).parents('.center,center').length>0)*/||(tag=="CENTER"))||((tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6"))))||((spis_tresci<0)&&(/*($(element).parents('li, dd').length>0)||*/(tag=="DD")||(tag=="LI")||(tag=="DT")))||((/*($(element).parents('p,i,b').length>0)||*/(tag=="P")||(tag=="I")||(tag=="B")||(tag=="CENTER")||(tag=="TD")||(tag=="TH")||(tag=="CAPTION")))));
if(warunek){
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
console.log(element.outerHTML,tekst,"ABC4",f,j,tag,element,rozdzial);
++f;
}
}
if((tag)&&((tag!="P")||((tag=="P")&&(!pierwsze_dziecko)))&&(j<=max_i_begin)){++i_begin;console.log(tekst,tag,"F",i_begin)};
}
}
}
var FunkcjaZnacznikaP=function(element,czy_tag){
var str_p=$(element).parents("P").first();
if(str_p.length>0){
var klon=document.createElement('div');
var czy_w_nim_a=false;
var pierwsze_dziecko=undefined;
for (const element_dzieci of str_p[0].childNodes){
var nowy_tag=(element_dzieci.tagName)?(element_dzieci.tagName.toUpperCase()):null;
if(nowy_tag!=="BR"){
if(!pierwsze_dziecko){
pierwsze_dziecko=element_dzieci;
}
if((element_dzieci==element)||($(element_dzieci).find(element).length>0)){czy_w_nim_a=true;}
$(klon).append(element_dzieci.cloneNode(true));
}else{
if(czy_w_nim_a){
czy_w_nim_a=undefined;
if(!$(klon.firstChild).hasClass('mw-numbering-main-page')){
var tekst_rozdzialu=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(klon).html())));
var element_rozdzialu=str_p[0];
//if(j<=max_i_begin){++i_begin;};
Numerowanie(element_rozdzialu,"P",tekst_rozdzialu,pierwsze_dziecko);
break;
}
}
pierwsze_dziecko=undefined;
klon=document.createElement('div');
}
}
if(czy_w_nim_a){
if(!$(klon.firstChild).hasClass('mw-numbering-main-page')){
var tekst_rozdzialu=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(klon).html())));
var element_rozdzialu=str_p[0];
//if(j<=max_i_begin){++i_begin;};
Numerowanie(element_rozdzialu,"P",tekst_rozdzialu,pierwsze_dziecko);
}
}
}
}
var bookname=DodatkiSkrypt.Nazwy.BOOKNAME(((aktualna_strona)?(aktualna_strona):(DodatkiSkrypt.Info.page.fullname)));
var namespace=DodatkiSkrypt.Nazwy.NAMESPACE(((aktualna_strona)?(aktualna_strona):(DodatkiSkrypt.Info.page.fullname)));
bookname=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(bookname);
namespace=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(namespace);
$(id_numerowanie).DodatkiSkryptEach(function(i,element){
var iterator=DodatkiSkrypt.Szereg.Html.IteratorPotomkowyPoElemencieHtml(element);
while(true){
var element=iterator();
if(
(element)
&&(((element.tagName)&&($(element).filter('style, link, script, noscript').length>0))
||($(element).closest('style, link, script, noscript').length>0))
){continue;}
k++;
console.log(k,p,"TYTAN",j,i_begin,max_i_begin,element);
if(k<p){continue;};
if(!element){break;};
(function(element){
var tag_name=element.tagName;
var tag;
if(tag_name){tag=tag_name.toUpperCase();}else{tag=null;}
var tekst;
if(element.tagName){
var tag_element=element.tagName.toUpperCase()
}
if(!tag){
console.log("SS2",element);
FunkcjaZnacznikaP(element,false);
if(j<=max_i_begin){++i_begin;};
}else if(
((tag=="DIV")&&($(element).hasClass('mw-heading')))
||((tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6"))
){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
$(div).find('.numeracja, .mw-numbering-main-page, .mw-editsection').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}else if((tag=="DIV")&&(($(element).hasClass('center'))|($(element).parent().hasClass('template-center')))){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}else if((tag=="TD")||(tag=="TH")||(tag=="CAPTION")){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}else if((tag=="P")||(((tag=="B")||(tag=="I"))&&($(element).find('br').length==0))){
var div=document.createElement('div' );
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
console.log("SS1",element);
Numerowanie(element,tag,tekst);
}else if((tag=="DD")||(tag=="DT")){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
//var czy_li=false;
//for(var begin=div.firstChild;begin!=null;begin=begin.nextSibling){
// if(begin.tagName!=null){
// var tag_dziecko=begin.tagName.toUpperCase();
// if((!czy_li)&&((tag_dziecko=="DL")||(tag_dziecko=="DD"))){
// czy_li=true;
// }
// if(czy_li){
// div.removeChild(begin);
// }
// }
//}*/
if($(div).find("ul, ol, dl").length==0){
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}
}else if(tag=="LI"){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
var czy_li=false;
for(var begin=div.firstChild;begin!=null;begin=begin.nextSibling){
if(begin.tagName!=null){
var tag_name=begin.tagName.toUpperCase();
if((!czy_li)&&((tag_name=="UL")||(tag_name=="OL"))){
czy_li=true;
}
if(czy_li){
div.removeChild(begin);
}
}
}
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
if(!tekst){if(j<=max_i_begin){++i_begin;};return;}
Numerowanie(element,tag,tekst);
}else if(tag=="CENTER"){
var div=document.createElement('div')
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
if(!tekst){if(j<=max_i_begin){++i_begin;};return;}
Numerowanie(element,tag,tekst);
}else if(tag=="A"){
FunkcjaZnacznikaP(element,true);
var editsection=$(element).parents('.mw-editsection').parents('.mw-heading');
if(editsection.length>0){if(j<=max_i_begin){++i_begin;};return;}
if($(element).hasClass('a.external')){if(j<=max_i_begin){++i_begin;};return;};
var div=document.createElement('div');
$(div).html(element.outerHTML);
$(div).find('a.gadget-replylinks-reply').remove();
var element_a=$(div).children('a').get(0);
if(!element_a){if(j<=max_i_begin){++i_begin;};return;};
var href=element_a.getAttribute("href");
if(href=="#"){if(j<=max_i_begin){++i_begin;};return;}
if(!href){href=""};
if(!$(element_a).hasClass('external')){
tab_href=DodatkiSkrypt.Szereg.Napis.UrojoneStrony(href);
href=tab_href.href;
var czy_edit=tab_href.edit;
if((namespace=="")||(namespace=="Wikijunior")){
if(/^([^\/]*)(\/)(.*)$/g.test(href)){
href=href.replace(/^([^\/]*)(\/)(.*)$/g,function(s,s1,s2,s3){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return s3;
}
return s;
});
}else{
if(((namespace!="")?(namespace+":"+bookname):bookname)==href){
href="";
}
}
console.log(href,"LLLLLLLLLLLLL");
}else if(namespace=="Wikibooks"){
href=href.replace(/^([Ww][Ii][Kk][Ii][Bb][Oo][Oo][Kk][Ss]:[Bb]rudnopis\/[^\/]*\/[^\/]*)\/(.*)$/g,function(s,s1,s2){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return s2;
}
return s;
});
href=href.replace(/^([Ww][Ii][Kk][Ii][Bb][Oo][Oo][Kk][Ss]:[Bb]rudnopis\/[^\/]*\/[^\/]*)$/g,function(s,s1){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return "";
}
return s;
});
}else if(namespace=="Wikipedysta"){
href=href.replace(/^([^\/]*\/[^\/]*)(\/)(.*)$/g,function(s,s1,s2,s3){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return s3;
}
return s;
});
href=href.replace(/^([^\/]*\/[^\/]*)$/g,function(s,s1){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return "";
}
return s;
});
}
tekst=href;
}else{
tekst=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href,false);
}
var nazwa=$(element).html();
Numerowanie(element,tag,tekst,undefined,nazwa,czy_edit);
}else{
if(j<=max_i_begin){++i_begin;};
return;
};
})(element);
}
});
return [f,i_begin,j-1];
};
var liczba_json=LiczbaElementowaTablicowaJson();
var liczba_spis_tresci=0;
var UsuwaniePozostalosciSpisTresci=function(){
var css_id=$(id_numerowanie).find('.mw-numbering-main-page');
css_id=DodatkiSkrypt.Scribunto.StronicowyParser.FiltrujElementyRodzicaAleNiePod(id_numerowanie,css_id,false);
var strona_start_fun=new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode(id_numerowanie);
css_id=$(css_id).filter(function(i,element){
if(!strona_start_fun.CzyJestElementemPotomka(element)){
return true;
}
return false;
});
$(css_id).remove();
$(id_numerowanie).find('.css_numersubst').removeClass('css_numersubst');
}
if(liczba_json>0){
for(;;){
var [f,i_begin,j]=FunctionNumeracja(liczba_spis_tresci);
console.log(f,i_begin,j,"Licznik pominień",liczba_json);
return Promise.resolve();
if(j==liczba_json){
if(f>0){
liczba_spis_tresci+=i_begin+1;
UsuwaniePozostalosciSpisTresci();
}else{
return Promise.resolve();
};
}else{
UsuwaniePozostalosciSpisTresci();
return Promise.reject();
}
}
}
return Promise.reject();
}
this.UstawianieNumeracjiSpisuRzeczy=function(dane){
var firstheading=$('#firstHeading');
if($(firstheading).children("#mw-article-numbering").first().length==0){
var span=document.createElement('span');
$(span).html(dane+". ");
span.setAttribute("id","mw-article-numbering");
$(firstheading).contents().first().before(span);
}
}
this.NumerujRozdzialyArtykulu=function(element,artykul,aktualna_strona){
return promise_numerowanie.DodatkiSkryptThen(function(data){
var gadget_numerowanie=data[0];var gadget_numerowanie_normalne=data[1];var gadget_numerowanie_asynchroniczne=data[2];
if(!gadget_numerowanie){return;}
artykul=(artykul)?artykul:DodatkiSkrypt.Info.page.articlename;
aktualna_strona=(aktualna_strona)?aktualna_strona:DodatkiSkrypt.Info.page.fullname
var id_numerowanie=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element,true).first();
if(!gadget_numerowanie_normalne){
var promise=UstalanieZmiennychNumerowanie(aktualna_strona,id_numerowanie,function(data,aktualna_strona,id_numerowanie){
return this_zmienna.PreparujStronyJednostek(id_numerowanie,artykul,aktualna_strona,true).DodatkiSkryptThen(function([dane,czy_strona_zbiorcza_naprawde]){
if(czy_strona_zbiorcza_naprawde){
if((!dane)
||(($(id_numerowanie).hasClass('.rodzic_szablon_subst_js'))
||($(id_numerowanie).hasClass('.szablon_subst_js'))
||($(id_numerowanie).parents('.rodzic_szablon_subst_js, .szablon_subst_js').length>0)
)
){return Promise.resolve();}
this_zmienna.UstawianieNumeracjiSpisuRzeczy(dane);
return Promise.resolve();
}else{
return Promise.resolve();
}
});
});
return promise;
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"");
}
});
}
this.PreparujStronyJednostek=function(id_numerowanie,artykul,aktualna_strona,czy_bez_prefix){
aktualna_strona=aktualna_strona||DodatkiSkrypt.Info.page.fullbookname;
var namespace=DodatkiSkrypt.Nazwy.NAMESPACE(aktualna_strona);
var namespace=DodatkiSkrypt.Nazwy.Np(namespace,{"jaka":"kanoniczna",});
if((namespace!="")&&(namespace!="Wikijunior")){
if((namespace=="User")|(namespace=="Wikibooks")){
var namespacebook=DodatkiSkrypt.Nazwy.BOOKSPACENAME(aktualna_strona);
if(namespacebook==""){return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});};
}else if(/\stalk$/g.test(namespace)){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});;
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}
var artykul_parametr=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(artykul).replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"").replace(/[\s_]+/g," ");
var aktualna_strona_rozwazana=DodatkiSkrypt.Nazwy.FULLPAGENAME(aktualna_strona);
var aktualna_strona_parametr=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(aktualna_strona_rozwazana);
var czy_strona_numerowac="{{#invoke:StronicowyParser|CzyStronęNumerować|"+aktualna_strona_parametr+"}}";
var pelna_nazwa_artykulu="{{ArtykułSubst|pobierz pełną nazwę artykułu=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}";
var pelna_nazwa_ksiazki="{{ArtykułSubst|pobierz pełną nazwę książki=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}";
var przekierowanie_strony="{{#invoke:Techniczne|PrzekierowanieDoStrony|{{msg:PEŁNANAZWAKSIĄŻKI|"+aktualna_strona_parametr+"}}|wyspecjalizowana=tak}}";
var numer_naglowka="{{PobierzNumerNagłówka|{{msg:NAZWAARTYKUŁUKSIĄŻKI|bez dodatkowych sprawdzeń=tak}}|bez kategorii stronicowych=tak}}";
var numer_artykulu="{{PobierzNumerArtykułu|"+artykul_parametr+"|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki={{ArtykułSubst|pobierz pełną nazwę artykułu=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}|bez kategorii stronicowych=tak}}";
var czy_strona_subst="{{#invoke:StronicowyParser|CzyStronaSubst}}";
var czy_spis_tresci="{{#invoke:StronicowyParser|CzySpisTreści|artykuł="+artykul_parametr+"|wyspecjalizowana=tak}}";
var dane_ksiazki="{{#tag:nowiki|{{#invoke:Techniczne|EncodeParametr|{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis="+artykul_parametr+"|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki={{ArtykułSubst|pobierz pełną nazwę artykułu=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}|wyspecjalizowana=tak}}}}}}";
var nazwa_przestrzeni_ksiazki="{{NAZWAPRZESTRZENIKSIĄŻKI|bez dodatkowych sprawdzeń=tak}}";
var pelna_nazwa_ksiazki_artykulu="{{msg:PEŁNANAZWAKSIĄŻKI|"+aktualna_strona_parametr+"}}";
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(
'{{#if:'+czy_strona_numerowac+
'|{{#if:'+
'{{#ifeq:'+pelna_nazwa_artykulu+'|'+aktualna_strona_parametr+'|tak|'+
'{{#ifeq:'+pelna_nazwa_ksiazki+'|'+
'{{#if:'+przekierowanie_strony+
'|'+przekierowanie_strony+
'|'+pelna_nazwa_ksiazki_artykulu+
'}}|tak'+
'}}'+
'}}'+
'|{{#if:'+czy_strona_subst+
'|{{#switch:{{NAMESPACE}}'+
'||Wikijunior='+numer_naglowka+
'|{{Ns:User}}|{{Ns:Project}}={{#if:'+nazwa_przestrzeni_ksiazki+'|'+numer_naglowka+'}}'+
'}}'+
'|{{#if:'+czy_spis_tresci+
'|{{#switch:{{NAMESPACE}}'+
'||Wikijunior='+dane_ksiazki+
'|{{Ns:User}}|{{Ns:Project}}={{#if:'+nazwa_przestrzeni_ksiazki+'|'+dane_ksiazki+'}}'+
'}}'+
'|{{#switch:{{NAMESPACE}}'+
'||Wikijunior='+numer_artykulu+
'|{{Ns:User}}|{{Ns:Project}}={{#if:'+nazwa_przestrzeni_ksiazki+'|'+numer_artykulu+'}}'+
'}}'+
'}}'+
'}}'+
'|STRONASTART'+
'}}'+
'|nie'+
'}}',aktualna_strona_rozwazana,null,true,null,null,null,null,null,gadget_numerowanie_zapisz_dane_na_kliencie).DodatkiSkryptThen(function(data){
var dane=data.parse.text["*"];
if(dane==null){return ["",false];}else if(dane=="nie"){return ["",false];}
/**/
if(dane!="STRONASTART"){
if((dane!=null)&&(dane!="")&&(dane!="(błąd)")){
if((!/^[\[].*[\]]$/g.test(dane))&&(!/^[{].*[}]$/g.test(dane))){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,dane,czy_bez_prefix).DodatkiSkryptThen(function(){
var biezaca_strona_rozwazaca=DodatkiSkrypt.Nazwy.FULLPAGENAME(DodatkiSkrypt.Info.page.fullname);
var czy_zbiorcza_naprawde=(biezaca_strona_rozwazaca==aktualna_strona_rozwazana);
return [dane,czy_zbiorcza_naprawde];
});
}else{
dane=DodatkiSkrypt.Szereg.Tekst.Decode(dane);
var json=JSON.parse(dane);
if(json){
console.log(json,"SYSAS");
var artykul_spis_tresci=DodatkiSkrypt.Nazwy.ARTICLENAME(aktualna_strona);
var spis="Spis treści - "+artykul_spis_tresci;
var tab_spis=json[spis];
var numer_spisu_tresci;
if(tab_spis){
for(var p in tab_spis){
var dane_spisu=tab_spis[p][artykul_spis_tresci];
if(dane_spisu){
numer_spisu_tresci=p;
break;
}
}
}
if(numer_spisu_tresci){
this_zmienna.UstawianieNumeracjiSpisuRzeczy(numer_spisu_tresci);
}
return this_zmienna.NumerowanieStronGłównychPodręcznikowWedlugZebranychDanych(id_numerowanie,json,aktualna_strona).DodatkiSkryptThen(function(){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"");
}).DodatkiSkryptCatch(function(){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"");
}).DodatkiSkryptThen(function(){return ["",false]});
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}).DodatkiSkryptCatch(function(error){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
});
return promise;
}
}
DymkiSubst.GadgetDymkiSubst=function(){
/**/
var dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych=undefined;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych=undefined;
var dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych=undefined;
/**/
var dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych=undefined;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych=undefined;
var dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych=undefined;
/**/
var dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var dymkisubst_dymki_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_dymkisubst){
czy_nie_gconfig_dymkisubst=true;
mw.messages.set({
'DymkiSubst-name': 'Dymki nad linkami inteligentymi',
'DymkiSubst-description-page': 'Wikibooks:StronicowyParser',
'DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych' : "Ustawia dymki, nad linkami, dla linków inteligentnych na stronach niezbiorczych.",
'DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych' : "Ustawia dymki, nad linkami, dla linków nieinteligentnych na stronach niezbiorczych.",
'DymkiSubst-dymki_asynchroniczne_na_stronach_niezbiorczych' : "Sprawdza, czy na stronie niezbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych' : "Ustawia dymki, nad linkami, dla linków inteligentnych na stronach zbiorczych.",
'DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych' : "Ustawia dymki, nad linkami, dla linków nieinteligentnych na stronach zbiorczych.",
'DymkiSubst-dymki_asynchroniczne_na_stronach_zbiorczych' : "Sprawdza, czy na stronie zbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'DymkiSubst-dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'DymkiSubst-dymki_zapisz_dane_na_kliencie': 'Zapisuje dane, co do dymków na kliencie, ściagniete z serwera',
});
gConfig.register('DymkiSubst', {name: mw.msg('DymkiSubst-name'), descriptionPage: mw.msg('DymkiSubst-description-page')}, [
{
name: 'dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych']
},
{
name: 'dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych']
},
{
name: 'dymki_asynchroniczne_na_stronach_niezbiorczych',
desc: mw.msg('DymkiSubst-dymki_asynchroniczne_na_stronach_niezbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych']
},
{
name: 'dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych']
},
{
name: 'dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych']
},
{
name: 'dymki_asynchroniczne_na_stronach_zbiorczych',
desc: mw.msg('DymkiSubst-dymki_asynchroniczne_na_stronach_zbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych']
},
{
name: 'dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('DymkiSubst-dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'dymki_zapisz_dane_na_kliencie',
desc: mw.msg('DymkiSubst-dymki_zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_dymkisubst_dymki_zapisz_dane_na_kliencie']
},
]);
}
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych')==true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych')==true);
dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych = (gConfig.get('DymkiSubst', 'dymki_asynchroniczne_na_stronach_niezbiorczych')==true);
/**/
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych')==true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych')==true);
dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych = (gConfig.get('DymkiSubst', 'dymki_asynchroniczne_na_stronach_niezbiorczych')==true);
/**/
dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('DymkiSubst', 'dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
dymkisubst_dymki_zapisz_dane_na_kliencie=(gConfig.get('DymkiSubst', 'dymki_zapisz_dane_na_kliencie')==true);
}
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych=((dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych:true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych=((dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych:true);
dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych=((dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych!==undefined)?dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych:true);
/**/
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych=((dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych:true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych=((dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych:true);
dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych=((dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych!==undefined)?dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych:true);
/**/
dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=((dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!==undefined)?dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true);
dymkisubst_dymki_zapisz_dane_na_kliencie=((dymkisubst_dymki_zapisz_dane_na_kliencie!==undefined)?dymkisubst_dymki_zapisz_dane_na_kliencie:false);
/**/
this.KodKomunikatuDymku=function(kod){
var tab_kody={
"su":true,
"sun":true,
"iw":true,
"inw":true,
"iwew":true,
"inwew":true,
"iew":true,
"inew":true,
"niw":true,
"ninw":true,
"niew":true,
"ninew":true,
"was":true,
"wasew":true,
"wash":true,
"washew":true,
"wasn":true,
"wasnew":true,
"ipw":true,
"inpw":true,
"dwni":true,
"sup":true,
"sunp":true,
"iwp":true,
"inwp":true,
"iwewp":true,
"inwewp":true,
"iewp":true,
"inewp":true,
"niwp":true,
"ninwp":true,
"niewp":true,
"ninewp":true,
"wasp":true,
"wasewp":true,
"washp":true,
"washewp":true,
"wasnp":true,
"wasnewp":true,
"ipwp":true,
"inpwp":true,
"dwnip":true,
}
return tab_kody[kod];
}
this.UstalanieZmiennychTworzeniaDymkowego=function(aktualna_strona,element){
var funkcja=function(){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
if(wikikod){
var dymkisubst_dymki_nad_linkami_inteligentnymi=dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi=dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych;
var dymkisubst_dymki_asynchroniczne=dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych;
}else{
var dymkisubst_dymki_nad_linkami_inteligentnymi=dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi=dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych;
var dymkisubst_dymki_asynchroniczne=dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych;
}
return Promise.resolve([dymkisubst_dymki_nad_linkami_inteligentnymi,dymkisubst_dymki_nad_linkami_nieinteligentnymi,dymkisubst_dymki_asynchroniczne]);
});
}
if(dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
return Promise.resolve([false,false,false]);
}
});
}else{
return funkcja();
}
};
var promise_dymki=this.UstalanieZmiennychTworzeniaDymkowego();
var tab_promise_dymki=new Array();
tab_promise_dymki.push(promise_dymki);
var this_zmienna=this;
//var tab_promise=new Array();
//this.CzekanieNaZwolnienieWszystkichKorutynWTabeliObietnicDymkiSubst=function(){
// return DodatkiSkrypt.CzekanieNaZwolnienieWszystkichKorutynWTabeliObietnic(tab_promise);
//}
var dymki_muteks=new DodatkiSkrypt.Muteks();
var dymki_projektowe_muteks=new DodatkiSkrypt.Muteks();
var UstalanieZmiennychDymkowe=function(aktualna_strona,element,funkcja){
var dymkisubst_dymki_nad_linkami_inteligentnymi;var dymkisubst_dymki_nad_linkami_nieinteligentnymi;var dymkisubst_dymki_asynchroniczne;
return promise_dymki.DodatkiSkryptThen(function(data){
dymkisubst_dymki_nad_linkami_inteligentnymi=data[0];dymkisubst_dymki_nad_linkami_nieinteligentnymi=data[1];dymkisubst_dymki_asynchroniczne=data[2];
if(dymkisubst_dymki_asynchroniczne){
if(aktualna_strona){
tab_promise_dymki.push(this_zmienna.UstalanieZmiennychTworzeniaDymkowego(aktualna_strona,element));
promise_dymki=tab_promise_dymki.at(-1);
return promise_dymki;
}
}
return data;
}).DodatkiSkryptThen(function(data){
return funkcja(data,aktualna_strona,element);
}).DodatkiSkryptFinally(function(data){
if(dymkisubst_dymki_asynchroniczne){
if(aktualna_strona){
tab_promise_dymki.pop();
promise_dymki=tab_promise_dymki.at(-1);
}
}
return data;
});
}
this.lineHeight=function(id){
var lineheight=window.getComputedStyle(id, null).lineHeight;
return parseFloat(lineheight);
}
/*Funkcja do wyświetlania komunikatów do [[Szablon:Link wewnętrzny]]*/
this.WyswietlKomunikatInfoKombajn=function(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,komunikat){
var body=document.querySelector('body');
if(body==null){return;}
var bodycontent = document.querySelector('#bodyContent');
if(bodycontent==null){return;}
this.UsunKomunikatInfo();
var div=document.createElement('div');
div.position="absolute";
//var element_id=id.getBoundingClientRect();
var left_real=event_clientX+window_scrollX-30;
var top_real=element_id_bottom+window_scrollY;
if(top_real<=0){return;}
//var wysokosclinii=this.lineHeight(id);
if((wysokosclinii==null)||(isNaN(wysokosclinii))||(wysokosclinii<=0)){return;};
var eY=event_clientY+window_scrollY;
for (var i=0;;++i){
var pomiedzy_gornym_a_dolnym_polozeniem_pod=i*wysokosclinii;
var pomiedzy_gornym_a_dolnym_polozeniem_nad=(i+1)*wysokosclinii;
var top_real_dolny=top_real-pomiedzy_gornym_a_dolnym_polozeniem_pod;
var top_real_gorny=top_real-pomiedzy_gornym_a_dolnym_polozeniem_nad;
if((top_real_dolny<0)||(top_real_gorny<0)){return;};
if(pomiedzy_gornym_a_dolnym_polozeniem_pod>id.offsetHeight){
top_real=top_real_dolny;
break;
}
if((eY<=top_real_dolny)&&(eY>=top_real_gorny)){
top_real=top_real_gorny;
break;
}
if((pomiedzy_gornym_a_dolnym_polozeniem_pod>id.offsetHeight)&&(pomiedzy_gornym_a_dolnym_polozeniem_nad>id.offsetHeight)){return;};
}
console.log(5)
var left_komunukat_main=parseInt(left_real);
var inset=5;
div.style.left=(left_komunukat_main>5)?((parseInt(left_real)).toString()+'px'):(inset+"px");
div.classList.add("dymkisubst_link_wewnętrzny_komunikatów");
div.setAttribute("id","dymkisubst_id_animacja_komunikatów");
$(div).html(komunikat);
var div_element=$(body).DodatkiSkryptAppend(div).get(0);
var div_komunikat=$(div_element).children().first();
var width=$(div_komunikat).get(0).offsetWidth;
var width_body=(window.visualViewport)?window.visualViewport["width"]:window.innerWidth;
var comp=window.getComputedStyle($(div_element).get(0),null);
var paddingleft=parseFloat(comp.getPropertyValue("padding-left"));
var paddingright=parseFloat(comp.getPropertyValue("padding-right"));
if(width+10>width_body){
$(div_komunikat).css('width',(width_body-inset*2-paddingleft-paddingright)+"px");
}
var top=parseInt(top_real-div_element.offsetHeight-3);
if(top<0){top=0;}
div.style.top=top.toString()+'px';
var rectbodycontent=bodycontent.getBoundingClientRect();
var leftbodycontent=rectbodycontent.left+window.scrollX;
var widthbodycontent=bodycontent.offsetWidth;
var id_komunikat_right=left_real+div_element.offsetWidth;
var marginesRight=1;
if(widthbodycontent+leftbodycontent<id_komunikat_right+marginesRight){
var roznica_offsetow=id_komunikat_right-widthbodycontent-leftbodycontent;
var left_div_element=parseInt(left_real-(roznica_offsetow)-marginesRight);
div_element.style.left=(left_div_element>5)?((left_div_element).toString()+'px'):(inset+"px");
}
var div_element_rect=div_element.getBoundingClientRect();
var left_real_id=event_clientX+window_scrollX;
var left_real_div=div_element_rect.left+window_scrollX;
var roz_left=left_real_id-left_real_div;
var div_el=document.createElement('div');
div_el.setAttribute('class',"dymkisubst_link_wewnętrzny_komunikatów_wskaźnik");
var div_el_dod=$(div_element).DodatkiSkryptAppend(div_el);
var left_komunikat=roz_left-9;
$(div_el_dod).css('left',(left_komunikat>0)?(left_komunikat+'px'):0);
}
this.UsunKomunikatInfo=function(id){
var body=document.querySelector('body');
if(body==null){return;}
var id_animation=$('#dymkisubst_id_animacja_komunikatów');
if(id_animation!==null){
$(id_animation).remove();
if(id){$(id).data('dymkisubst_poprawnie',true);}
}else{
var link_wewnetrzny_komunikatow=$('.dymkisubst_link_wewnętrzny_komunikatów');
if((link_wewnetrzny_komunikatow!==null)&&(link_wewnetrzny_komunikatow.length>0)){
$(link_wewnetrzny_komunikatow).remove();
if(id){$(id).data('dymkisubst_poprawnie',true);}
}else{
if(id){$(id).data('dymkisubst_poprawnie',false);}
}
}
}
this.PobierzKodElementuRodzicaA=function(element_a){
var span_element=$(element_a).parent().filter('span.link');
if($(span_element).length>0){
var parent_element_a=$(span_element).get(0);
}else{
var parent_element_a=$(element_a).filter('a.link').get(0);
}
if(parent_element_a==null){return null;};
var element_link=parent_element_a.classList;
if((element_link!==null)&&(element_link.length>0)){
for(var a=0;a<element_link.length;++a){
var kod=element_link[a];
if(kod!="link"){
var czy_tak=this.KodKomunikatuDymku(kod);
if(czy_tak){
return kod;
}
}
}
}
return null;
}
var ApiAbort=function(id,funkcja){
return function(api){
var api_fun=function(){
var id=this;
$(id).off("mouseout",api_fun);
$(id).data('dymkisubst_poprawnie',false);
api.abort();
DymkiSubst.gadgetdymkisubst.UsunKomunikatInfo(id);
if(funkcja){funkcja(id);};
}
$(id).off("mouseout",api_fun).on("mouseout",api_fun);
return function(id){
$(id).off("mouseout",api_fun);
};
}
}
this.WyswietlKomunikatInfo=function(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom){
var tab_promise=new Array();
var Komunikat=function(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,tekst_komunikat){
if(!$(id).data('dymkisubst_poprawnie')){
this_zmienna.UsunKomunikatInfo();
return;
}
var div=document.createElement('div');
$(div).html(tekst_komunikat);
var P=function(element){
var komunikat=$(element).find("p:first-child");
$(komunikat).css("margin-top","0");
var komunikat=$(element).find("p:last-child");
$(komunikat).css("margin-bottom","0");
}
P(div);
tekst_komunikat=$(div).html();
this_zmienna.WyswietlKomunikatInfoKombajn(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,tekst_komunikat);
}
this.UsunKomunikatInfo();
var kod=this.PobierzKodElementuRodzicaA(id);
if(kod===null){return;}
var old_href=id.getAttribute('old_href');
var href=id.getAttribute('href');
if(href===null){
href="";
}else{
href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href);
href=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(href);
}
if(old_href){
old_href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(old_href);
old_href=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(old_href);
}
var strona=DodatkiSkrypt.Info.page.fullname;
var wikikod=((old_href!==null)?('{{#invoke:Brudnopis/Persino/Dymki|UzyskajOpisOdParametrówLinku|'+kod+'|'+href+'|'+old_href+'}}'):('{{#invoke:Brudnopis/Persino/Dymki|UzyskajOpisOdParametrówLinku|'+kod+'|'+href+'}}'));
/**/
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(wikikod,strona,null,true,null,null,null,null,null,dymkisubst_dymki_zapisz_dane_na_kliencie,ApiAbort(id)).DodatkiSkryptThen(function(data){
var tekst_komunikat=data.parse.text['*'];
Komunikat(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,tekst_komunikat);
}).DodatkiSkryptCatch((error) => {});
return promise;
}
this.UstawZdarzeniaKomunikatuInfo=function(rodzic,__muteks,aktualna_strona){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return UstalanieZmiennychDymkowe(aktualna_strona,rodzic,function(data,aktualna_strona,rodzic){
var dymkisubst_dymki_nad_linkami_inteligentnymi=data[0];var dymkisubst_dymki_nad_linkami_nieinteligentnymi=data[1];var dymkisubst_dymki_asynchroniczne=data[2];
if(!dymkisubst_dymki_nad_linkami_inteligentnymi){return;}
var klasa_link_wewnetrzny=$(rodzic).find('.link');
if($(klasa_link_wewnetrzny).length==0){return;};
klasa_link_wewnetrzny=DodatkiSkrypt.Scribunto.StronicowyParser.FiltrujElementyRodzicaAleNiePod(rodzic,klasa_link_wewnetrzny);
$(klasa_link_wewnetrzny).DodatkiSkryptEach(function(s,poszczegolna_klasa){
if($(poszczegolna_klasa).filter('span, a').length>0){
this_zmienna.UstawZdarzeniaKomunikatuElementuInfo(poszczegolna_klasa);
}
});
var __muteks=new DodatkiSkrypt.Muteks();
var tab_promise=new Array();
rodzic=DodatkiSkrypt.Scribunto.StronicowyParser.PoliczPodAleNiePodPodRodzica(rodzic);
$(rodzic).DodatkiSkryptEach(function(i,element_g){
var aktualna_strona=DodatkiSkrypt.Scribunto.StronicowyParser.AktualnaStronaElementuOpakowania(element_g);
tab_promise.push(this_zmienna.UstawZdarzeniaKomunikatuInfo(element_g,__muteks,aktualna_strona));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,__muteks||dymki_projektowe_muteks);
}
this.UruchomZdarzenieMouseOverDymkiInfo=function(event,id){
var element_id=id.getBoundingClientRect();
var wysokosclinii=this_zmienna.lineHeight(id);
var window_scrollX=window.scrollX;
var window_scrollY=window.scrollY;
var event_clientX=event.clientX;
var event_clientY=event.clientY;
var element_id_top=element_id.top;
var element_id_bottom=element_id.bottom;
/**/
var promise=$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
if($(id).data('dymkisubst_poprawnie')){
return DymkiSubst.gadgetdymkisubst.WyswietlKomunikatInfo(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom);
}
},null,dymki_muteks);
}
this.UstawZdarzeniaKomunikatuElementuInfo=function(poszczegolna_klasa){
var this_zmienna=this;
var element_link=poszczegolna_klasa.classList;
if((element_link!==null)&&(element_link.length>0)){
for(var a=0;a<element_link.length;++a){
var kod=element_link[a];
if(kod!="link"){
if(this.KodKomunikatuDymku(kod)){
var nie_span_ale_a=$(poszczegolna_klasa).filter('a.link');
var a_tag=((nie_span_ale_a.length>0)?($(nie_span_ale_a)):($(poszczegolna_klasa).find('a')));
if(a_tag.first().get(0)!=null){
$(a_tag).on("mouseover",function(){
var id=this;
$(id).data('dymkisubst_poprawnie',true);
this_zmienna.UruchomZdarzenieMouseOverDymkiInfo(event,id);
});
$(a_tag).on("mouseout",function(){
var id=this;
$(id).data('dymkisubst_poprawnie',false);
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DymkiSubst.gadgetdymkisubst.UsunKomunikatInfo(id);
},null,dymki_muteks);
});
break;
}
}
}
}
}
}
this.UstawTagiIKlasyKomunikatuInfo=function(rodzic,__muteks,aktualna_strona){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return UstalanieZmiennychDymkowe(aktualna_strona,rodzic,function(data,aktualna_strona,rodzic){
var dymkisubst_dymki_nad_linkami_inteligentnymi=data[0];var dymkisubst_dymki_nad_linkami_nieinteligentnymi=data[1];var dymkisubst_dymki_asynchroniczne=data[2];
if(!dymkisubst_dymki_nad_linkami_nieinteligentnymi){return;}
var tab_promise=new Array();
var CzyNieRysunek=function(element){
if($(element).filter('mw-file-description').parent().filter("figure, span").filter("[typeof=\"mw:File\"]").length>0){return false;};
if($(element).has(' > img.mw-file-element').parent().filter("figure, span").filter("[typeof=\"mw:File\"]").length>0){return false;};
return true;
}
var NieLinkiReferencji=function(element){
if($(element).parent().hasClass('reference')){return false;};
return true;
}
var Czy_w_toc=function(element){
var toc=new Array("toc","toc_spis","toc_wykaz");
for(var a=0;a<toc.length;++a){
var toc_pos=$(rodzic).find("."+toc[a]);
if((toc_pos!==null)&&(toc_pos.length>0)){
for(var b=0;b<toc_pos.length;++b){
var element_toc=toc_pos[b];
var el=$(element_toc).find(element)
if($(el).length>0){
return false;
}
}
}
}
return true;
}
var TableMenu=function(element){
var tablemenu=$(rodzic).find("table.tablemenu");
if((tablemenu!==null)&&(tablemenu.length>0)){
for(var s=0;s<tablemenu.length;++s){
var el=$(tablemenu[s]).find(element);
if($(el).length>0){
return false;
}
}
}
return true;
}
var NaglowekDokumentacji=function(element){
var dokumentacja=$(rodzic).find(".template-documentation #doc_editlinks, #documentation-meta-data");
if((dokumentacja!==null)&&(dokumentacja.length>0)){
for(var s=0;s<dokumentacja.length;++s){
var el=$(dokumentacja[s]).find(element);
if($(el).length>0){
return false;
}
}
}
return true;
}
var CategoryTree=function(element){
var a_element=$(rodzic).find('.CategoryTreeTag').find(element);
if($(a_element).length>0){
return false;
}
return true;
}
var TrybCiemny=function(element){
var elem1=$(rodzic).find('.uruchom_tryb_ciemny').find(element);
var elem2=$(rodzic).find('.uruchom_tryb_jasny').find(element);
if(($(elem1).length>0)||($(elem2).length>0)){
return false;
}
return true;
}
var BezSzablonSubst=function(element){
var element_tag=$(rodzic).find('.rodzic_szablon_subst_js, .szablon_subst_js').find(element);
if($(element_tag).length>0){return false;}
return true;
}
var Thumb=function(element){
var thumb=$(rodzic).find('.thumb').find(element);
if($(thumb).length>0){
var caption=$(rodzic).find('.thumb .thumbcaption').find(element);
if($(caption).length>0){
return true;
}
return false;
}
return true;
}
var Audio=function(element){
var thumb=$(rodzic).find('.audio').find(element);
if($(thumb).length>0){
return false;
}
return true;
}
var Button=function(element){
var button=$(element).filter("[role=\"button\"]");
if($(button).length>0){
return false;
}
return true;
}
var elementy_a=$(rodzic).find('a');
if($(elementy_a).length==0){return;};
elementy_a=DodatkiSkrypt.Scribunto.StronicowyParser.FiltrujElementyRodzicaAleNiePod(rodzic,elementy_a);
var tab_outer_a=new Array();
$(elementy_a).DodatkiSkryptEach(function(a,element_a){
var href=element_a.getAttribute('old_href')||element_a.getAttribute('href');
if((((href!==null)&&(href!=""))||(($(element_a).hasClass('selflink'))&&($(element_a).hasClass('mw-selflink'))))&&(href!="#")&&($(element_a).html()!="")&&(!$ (element_a).hasClass('image'))){
if(!((href)&&(href.match(/^javascript:/g)))){
var linenos=$(element_a).find("span.linenos");
var tak=(((linenos===null)||(linenos.length==0))
&&(CzyNieRysunek(element_a))
&&(NieLinkiReferencji(element_a))
&&(Thumb(element_a))
&&(Audio(element_a))
&&(NaglowekDokumentacji(element_a))
&&(Czy_w_toc(element_a))
&&(TableMenu(element_a))
&&(CategoryTree(element_a))
&&(TrybCiemny(element_a))
&&(BezSzablonSubst(element_a))
&&(Button(element_a))
);
if(tak){
if($(element_a).parent().filter('span.link').length>0){
tak=false;
}else{
tak=true;
}
}
if(!tak){
return;
}
}else{
return;
}
}
(function(element_a){
//var element_a=tab_outer_a[a];
var LinkURL=function(wynik_link_wewnetrzny,element_a){
//var element_outer_a=tab_outer_a[numer_wywolania];
$(element_a).addClass("link");
$(element_a).addClass(wynik_link_wewnetrzny);
this_zmienna.UstawZdarzeniaKomunikatuElementuInfo(element_a);
return element_a;
}
var strona_href=element_a.getAttribute('old_href')||element_a.getAttribute('href');
strona_href=(((strona_href)&&(strona_href!=""))?strona_href:"")
if(strona_href!==""){
strona_href=strona_href.replace(/[_\s]+/g,"_");
strona_href=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona_href);
var strona=mw.config.get('wgPageName');
var FunDymkiSubstEvent=function(event){
var id=this;
//$(element_a).off("mouseover",FunDymkiSubstEvent);
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var poszczegolna_klasa;
return DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:Linki|UzyskajKodWikiLinku|strona="+strona_href+"|wyspecjalizowana=tak}}",strona,null,true,null,null,null,null,null,dymkisubst_dymki_zapisz_dane_na_kliencie,
ApiAbort(id,function(id){
//$(id).off("mouseover",FunDymkiSubstEvent).on("mouseover",FunDymkiSubstEvent);
})).DodatkiSkryptThen(function(data){
$(id).off("mouseover",FunDymkiSubstEvent);
var wynik_linkURL=data.parse.text['*'];
var poszczegolna_klasa=LinkURL(wynik_linkURL,element_a);
$(id).data('dymkisubst_poprawnie',true);
this_zmienna.UruchomZdarzenieMouseOverDymkiInfo(event,id);
console.log("TYTAn124543336457")
/**/
}).DodatkiSkryptCatch((error) => {});
},null,dymki_muteks);
}
$(element_a).off("mouseover",FunDymkiSubstEvent).on("mouseover",FunDymkiSubstEvent);
}
})(element_a);
});
var __muteks=new DodatkiSkrypt.Muteks();
var tab_promise=new Array();
rodzic=DodatkiSkrypt.Scribunto.StronicowyParser.PoliczPodAleNiePodPodRodzica(rodzic);
$(rodzic).DodatkiSkryptEach(function(i,element_g){
var aktualna_strona=DodatkiSkrypt.Scribunto.StronicowyParser.AktualnaStronaElementuOpakowania(element_g);
tab_promise.push(this_zmienna.UstawZdarzeniaKomunikatuInfo(element_g,__muteks,aktualna_strona));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,__muteks||dymki_projektowe_muteks);
}
}
SzablonSubst.SzablonSubst=function(){
var szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej=undefined;
var szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej=undefined;
/**/
var szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej=undefined;
var szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej=undefined;
/**/
var szablonsubst_nie_uwzgledniaj_edycji_sekcji=undefined;
var szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var szablonsubst_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_szablonsubst){
czy_nie_gconfig_szablonsubst=true;
mw.messages.set({
'SzablonSubst-name': 'Rozwijanie szablonów',
'SzablonSubst-description-page': 'Wikibooks:StronicowyParser/SzablonSubst',
'SzablonSubst-nie_uwzgledniaj_edycji_sekcji': 'Wyłącz możliwość edycji sekcji w artykułach.',
'SzablonSubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej': 'Włącz rozwijanie szablonów, w JavaScript, nie na stronie zbiorczej.',
'SzablonSubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej': 'Sprawdza, czy na stronie niezbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.',
'SzablonSubst-rozwijanie_szablonow_na_stronie_zbiorczej': 'Włącz rozwijanie szablonów, w JavaScript, na stronie zbiorczej.',
'SzablonSubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej': 'Sprawdza, czy na stronie zbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.',
'SzablonSubst-rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'SzablonSubst-zapisz_dane_na_kliencie':'Zapisuje dane uzyskane z ładowanych stron ze serwerana klienta',
});
gConfig.register('SzablonSubst', {name: mw.msg('SzablonSubst-name'), descriptionPage: mw.msg('SzablonSubst-description-page')}, [
{
name: 'nie_uwzgledniaj_edycji_sekcji',
desc: mw.msg('SzablonSubst-nie_uwzgledniaj_edycji_sekcji'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-nie_uwzgledniaj_edycji_sekcji']
},
{
name: 'rozwijanie_szablonow_nie_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej']
},
{
name: 'rozwijanie-szablonow_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'zapisz_dane_na_kliencie',
desc: mw.msg('SzablonSubst-zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_szablonsubst-zapisz_dane_na_kliencie']
},
]);
}
szablonsubst_nie_uwzgledniaj_edycji_sekcji = (gConfig.get('SzablonSubst', 'nie_uwzgledniaj_edycji_sekcji')==true);
szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_nie_na_stronie_zbiorczej')==true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej')==true);
/**/
szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_na_stronie_zbiorczej')==true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej')==true);
/**/
szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
szablonsubst_zapisz_dane_na_kliencie=(gConfig.get('SzablonSubst', 'zapisz_dane_na_kliencie')==true);
}
szablonsubst_nie_uwzgledniaj_edycji_sekcji=((szablonsubst_nie_uwzgledniaj_edycji_sekcji!=undefined)?szablonsubst_nie_uwzgledniaj_edycji_sekcji:false);
szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej:true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej:true);
/**/
szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej:true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej:true);
/**/
szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:false);
szablonsubst_zapisz_dane_na_kliencie=((szablonsubst_zapisz_dane_na_kliencie!=undefined)?szablonsubst_zapisz_dane_na_kliencie:false);
/**/
this.UstalanieZmiennychRozwijaniaSzablonowego=function(aktualna_strona,element){
var funkcja=function(){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
if(wikikod){
var szablonsubst_rozwijanie_szablonow=szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej;
var szablonsubst_rozwijanie_szablonow_asynchroniczne=szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej
}else{
var szablonsubst_rozwijanie_szablonow=szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej;
var szablonsubst_rozwijanie_szablonow_asynchroniczne=szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej;
}
return Promise.resolve([szablonsubst_rozwijanie_szablonow,szablonsubst_rozwijanie_szablonow_asynchroniczne]);
});
}
if(szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
return Promise.resolve([false,false,false]);
}
});
}else{
return funkcja();
}
}
var promise_szablon=this.UstalanieZmiennychRozwijaniaSzablonowego();
var tab_promise_szablon=new Array();
tab_promise_szablon.push(promise_szablon);
var this_zmienna=this;
var UstalanieZmiennychSzablonowe=function(aktualna_strona,element,funkcja){
var szablonsubst_rozwijanie_szablonow;var szablonsubst_rozwijanie_szablonow_asynchroniczne;
return promise_szablon.DodatkiSkryptThen(function(data){
szablonsubst_rozwijanie_szablonow=data[0];szablonsubst_rozwijanie_szablonow_asynchroniczne=data[1];
if(szablonsubst_rozwijanie_szablonow_asynchroniczne){
if(aktualna_strona){
tab_promise_szablon.push(this_zmienna.UstalanieZmiennychRozwijaniaSzablonowego(aktualna_strona,element));
promise_szablon=tab_promise_szablon.at(-1);
return promise_szablon;
}
}
return data;
}).DodatkiSkryptThen(function(data){
return funkcja(data,aktualna_strona,element);
}).DodatkiSkryptFinally(function(){
if(szablonsubst_rozwijanie_szablonow_asynchroniczne){
if(aktualna_strona){
tab_promise_szablon.pop();
promise_szablon=tab_promise_szablon.at(-1);
}
}
});
}
var tab_num=new Array();
this.PobierzSzablon=function(element,nazwa,czy_numerowac,aktualna_strona){
element=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element);
var PobierzSzablon=function(element,nazwa,czy_numerowac){
return UstalanieZmiennychSzablonowe(aktualna_strona,element,function(data,aktualna_strona,element){
var szablonsubst_rozwijanie_szablonow=data[0];var szablonsubst_rozwijanie_szablonow_asynchroniczne=data[1];
var tab_promise=new Array();
if(!szablonsubst_rozwijanie_szablonow){return Promise.resolve($());}
if(czy_numerowac==undefined){czy_numerowac=true;}
var szablon_js;
if(!element){
szablon_js=DodatkiSkrypt.Szereg.Styl.ElementRodzic('.szablon_subst_js');
}else{
szablon_js=$(element).find('.szablon_subst_js');
}
var rodzic_szablon_subst_js=$(szablon_js).parent().filter('.rodzic_szablon_subst_js');
if(rodzic_szablon_subst_js.length==0){
rodzic_szablon_subst_js=$(szablon_js).filter('.szablon_subst_js');
}
if((szablon_js!==null)&&(szablon_js.length>0)){
for(var p=0;p<szablon_js.length;++p){
var element=szablon_js[p];
var potomek=((element)?($('.szablon_subst_js').find(element)):element);
if((potomek===null)||(potomek.length==0)){
var strona_szablon_js=undefined;
var nazwa_strony=$(element).parent().first()[0].querySelector('.nazwa_strony');
if(nazwa_strony){
strona_szablon_js=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(nazwa_strony).html())));
if(/^[_\s]*$/g.test(strona_szablon_js)){
strona_szablon_js=undefined;
}
}
if(!strona_szablon_js){
strona_szablon_js=((nazwa)?nazwa:(DodatkiSkrypt.Info.page.fullname));
}
var zawartosc;
var wzor_element=$(element).children("*");
if((wzor_element!==null)&&(wzor_element.length>0)){
zawartosc=$(element).html();
for(var i=0;i<wzor_element.length;++i){
var math=wzor_element[i].outerHTML;
var math_temp=math;
math=math.replace(/[\{\}\=\|]/g,function(s){
var tab={
"{":"{{(}}",
"}":"{{)}}",
"=":"{{=}}",
"|":"{{!}}"
};
return tab[s]||s;
}).replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/\//g,"&#47;");
math_temp=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(math_temp);
var re=new RegExp(math_temp,"g");
zawartosc=zawartosc.replace(re,math);
}
}else{
zawartosc=$(element).html();
}
var grupa=zawartosc.match(/\|\s*grupa\s*=\s*[^\|\{\}<>]+/g);
if(grupa!==null){
var grupa_temp=grupa.toString();
var grupa_temp2=grupa_temp;
grupa_temp=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(grupa_temp);
var re=new RegExp(grupa_temp,"g");
grupa=grupa.toString().replace(/\|\s*grupa\s*=\s*/g,"").replace(/^\s*/g,"").replace(/\s*$/g,"");
tab_num[grupa]=((tab_num[grupa])?tab_num[grupa]:0)+1;
zawartosc=zawartosc.replace(re,grupa_temp2+"|numer szablonu="+tab_num[grupa]);
}
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(((szablonsubst_nie_uwzgledniaj_edycji_sekcji)?("__NOEDITSECTION__\n"):"\n")+zawartosc,strona_szablon_js,null,true,p,false,true,null,null,szablonsubst_zapisz_dane_na_kliencie).DodatkiSkryptThen(function(data){
var wikikod=data.parse.text['*'];
var title=data.parse.title;
var number=data.parse.text.number;
wikikod=wikikod.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&#47;/g,"/");
var parent_szablon_js=szablon_js[number].parentNode;
var element_div;
if($(parent_szablon_js).hasClass('rodzic_szablon_subst_js')){
element_div=parent_szablon_js;
}else{
element_div=szablon_js[number];
}
$(element_div).html(wikikod);
element_div.setAttribute('nazwa_strony',title);
element_div.classList.add('szablon_subst_js_zanalizowany');
return PobierzSzablon(element_div,nazwa,czy_numerowac);
}).DodatkiSkryptCatch(function(error){});
tab_promise.push(promise);
}
}
}
return Promise.DodatkiSkryptAll(tab_promise).DodatkiSkryptThen(function(tab_rodzic_szablon_subst_js){
tab_rodzic_szablon_subst_js.forEach(function(rodzic_szablon_subst_js_2){
if(rodzic_szablon_subst_js_2){
rodzic_szablon_subst_js=DodatkiSkrypt.DodatkiSkryptJQuery(rodzic_szablon_subst_js,rodzic_szablon_subst_js_2);
}
});
return rodzic_szablon_subst_js;
});
});
}
return PobierzSzablon(element,nazwa,czy_numerowac).DodatkiSkryptThen(function(rodzic_szablon_subst_js){
return rodzic_szablon_subst_js;
});
}
this.PobierzSzablonyStronyNieZbiorczej=function(){
//return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](StronaSubst,new Array("analiza_stron_zbiorczych")).DodatkiSkryptThen(function(){
var id_strony=$(DodatkiSkrypt.Szereg.IdCSS(1)).first();
if(id_strony.length>0){
var muteks=new DodatkiSkrypt.Muteks();
return StronaSubst.analiza_stron_zbiorczych.AnalizujDalejSzablonSubst(id_strony[0],muteks);
}
}).DodatkiSkryptCatch(function(){});
//});
}
}
StronaSubst.WyswietlStronyKsiazki=function(){
var stronasubst_latex=undefined;
var stronasubst_mathml=undefined;
var stronasubst_opakuj_kategorie_ze_sortowaniem=undefined;
var stronasubst_przytnij_tekst=undefined;
var stronasubst_ukrywaj_toc=undefined;
var stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach=undefined;
var stronasubst_numerowanie_poszczegolnych_rozdzialow=undefined;
var stronasubst_aktualizowanie_nazw_artykulow=undefined;
var stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami=undefined;
var stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika=undefined;
var stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej=undefined;
var stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule=undefined;
var stronasubst_nie_usuwaj_styli=undefined;
var stronasubst_naprawiaj_naglowki=undefined;
var stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst=undefined;
/**/
var stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var stronasubst_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_stronasubst){
czy_nie_gconfig_stronasubst=true;
mw.messages.set({
'StronaSubst-name': 'Strona zbiorcza',
'StronaSubst-description-page': 'Wikibooks:StronicowyParser',
'StronaSubst-latex': 'Wstaw tekst latexowy wzorów matematycznych, w przeciwnym przypadku jest on w formie obrazków.',
'StronaSubst-mathml': 'Wstaw wzory matematyczne w formie znaczników HTML w postaci MathML.',
'StronaSubst-opakuj_kategorie_ze_sortowaniem' : 'W stronach zbiorczych opakowuje kategorie dla każdej strony, w postaci ramki.',
'StronaSubst-przytnij_tekst' : 'W stronach zbiorczych włącza ucinanie artykułu z początku i końca ze zbędnych białych znaków.',
'StronaSubst-ukrywaj_toc' : "Ukrywa, począwszy od jakiegoś poziomu wszystkich elementów spisów treści, na stronach zbiorczych.",
'StronaSubst-dymki_nad_linkami_w_ladowanych_dynamicznie_stronach' : "Włącza dymki, nad linkami, w ładowanych dynamicznie stronach, tworząc je inteligentnymi.",
'StronaSubst-numerowanie_poszczegolnych_rozdzialow': 'Włącz numerowanie poszczególnych rozdziałów',
'StronaSubst-aktualizowanie_nazw_artykulow' : 'Aktualizuje, w postaci linków, na podstawie spisów treści nazwy artykułów bez nagłówków.',
'StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami' : "Aktualizuje sekcje poszczegónych rozdziałów, według artykułów z nagłówkami, podręcznika ładowanych rozdziałami, w postaci linków.",
'StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika' : 'Aktualizuje, na podstawie tego ostatniego przed nim ustawienia na tak, sekcje poszczegónych rozdziałów artykułów, z nagłówkami, podręcznika ładowanych rozdziałami, w postaci linków, według spisów treści podręcznika, w przeciwnym wypadku według artykułów.',
'StronaSubst-aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule' : 'Aktualizuje, na podstawie tego przedostatniego i ostatniego, przed nim ustawienia na tak, elementy sekcji rozdziałów ładowanych rozdziałami artykułów, z nagłówkami, według spisów treści, w postaci linków, nawet wtedy, gdy one tam nie istnieją.',
'StronaSubst-aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej' : 'Aktualizuje nagłówki, nieartykularne, strony głównej podręcznika na stronie zbiorczej.',
'StronaSubst-nie_usuwaj_styli' : 'Nie usuwa styli z nagłówków ładowanych stron.',
'StronaSubst-naprawiaj_naglowki' : 'Naprawia nagłówki strony.',
'StronaSubst-rozwijaj_szablony_oznaczone_szablonem_szablonsubst' : 'Rozwijaj szablony oznaczone szablonem SzablonSubst.',
'StronaSubst-uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'StronaSubst-uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom, ramkę postępu ładowania stron, tylko dla stron ładowanych na głównej stronie zbiorczej',
'StronaSubst-zapisz_dane_na_kliencie': 'Ściągnięte dane zapisujena kliencie, by później mieć do nich szybszy dostęp',
});
gConfig.register('StronaSubst', {name: mw.msg('StronaSubst-name'), descriptionPage: mw.msg('StronaSubst-description-page')}, [
{
name: 'latex',
desc: mw.msg('StronaSubst-latex'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_latex']
},
{
name: 'mathml',
desc: mw.msg('StronaSubst-mathml'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_mathml']
},
{
name: 'opakuj_kategorie_ze_sortowaniem',
desc: mw.msg('StronaSubst-opakuj_kategorie_ze_sortowaniem'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_opakuj_kategorie_ze_sortowaniem']
},
{
name: 'przytnij_tekst',
desc: mw.msg('StronaSubst-przytnij_tekst'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_przytnij_tekst']
},
{
name: 'ukrywaj_toc',
desc: mw.msg('StronaSubst-ukrywaj_toc'),
type: 'integer',
deflt: 0,
validation: function(n){ if((n<0)||(n==1)){ throw 'Wartość dotycząca poziomu ukrywania spisów treści jest nieprawidłowa!' }; return n; },
legacy: [window, 'wb_stronasubst_ukrywaj_toc']
},
{
name: 'dymki_nad_linkami_w_ladowanych_dynamicznie_stronach',
desc: mw.msg('StronaSubst-dymki_nad_linkami_w_ladowanych_dynamicznie_stronach'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach']
},
{
name: 'numerowanie_poszczegolnych_rozdzialow',
desc: mw.msg('StronaSubst-numerowanie_poszczegolnych_rozdzialow'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_numerowanie_poszczegolnych_rozdzialow']
},
{
name: 'aktualizowanie_nazw_artykulow',
desc: mw.msg('StronaSubst-aktualizowanie_nazw_artykulow'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_aktualizowanie_nazw_artykulow']
},
{
name: 'aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami',
desc: mw.msg('StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami']
},
{
name: 'aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika',
desc: mw.msg('StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika']
},
{
name: 'aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule',
desc: mw.msg('StronaSubst-aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule']
},
{
name: 'aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej',
desc: mw.msg('StronaSubst-aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej']
},
{
name: 'nie_usuwaj_styli',
desc: mw.msg('StronaSubst-nie_usuwaj_styli'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_nie_usuwaj_styli']
},
{
name: 'naprawiaj_naglowki',
desc: mw.msg('StronaSubst-naprawiaj_naglowki'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_naprawiaj_naglowki']
},
{
name: 'rozwijaj_szablony_oznaczone_szablonem_szablonsubst',
desc: mw.msg('StronaSubst-rozwijaj_szablony_oznaczone_szablonem_szablonsubst'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst']
},
{
name: 'uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('StronaSubst-uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('StronaSubst-uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'zapisz_dane_na_kliencie',
desc: mw.msg('StronaSubst-zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_zapisz_dane_na_kliencie']
},
]);
}
stronasubst_latex = (gConfig.get('StronaSubst', 'latex')==true);
stronasubst_mathml = (((gConfig.get('StronaSubst', 'mathml'))&&(!stronasubst_latex))==true);
stronasubst_opakuj_kategorie_ze_sortowaniem = (gConfig.get('StronaSubst', 'opakuj_kategorie_ze_sortowaniem')==true);
stronasubst_przytnij_tekst = (gConfig.get('StronaSubst', 'przytnij_tekst')==true);
stronasubst_ukrywaj_toc = gConfig.get('StronaSubst', 'ukrywaj_toc');
stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach = gConfig.get('StronaSubst', 'dymki_nad_linkami_w_ladowanych_dynamicznie_stronach');
stronasubst_numerowanie_poszczegolnych_rozdzialow = gConfig.get('StronaSubst', 'numerowanie_poszczegolnych_rozdzialow');
stronasubst_aktualizowanie_nazw_artykulow = (gConfig.get('StronaSubst', 'aktualizowanie_nazw_artykulow')==true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami = (gConfig.get('StronaSubst', 'aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami')==true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika = (gConfig.get('StronaSubst','aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika')==true);
stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej = (gConfig.get('StronaSubst','aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej')==true);
stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule = (gConfig.get('StronaSubst','aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule')==true);
stronasubst_nie_usuwaj_styli = (gConfig.get('StronaSubst','nie_usuwaj_styli')==true);
stronasubst_naprawiaj_naglowki = (gConfig.get('StronaSubst','naprawiaj_naglowki')==true);
stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst = (gConfig.get('StronaSubst','rozwijaj_szablony_oznaczone_szablonem_szablonsubst')==true);
stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('StronaSubst','uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('StronaSubst','uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
stronasubst_zapisz_dane_na_kliencie = (gConfig.get('StronaSubst','zapisz_dane_na_kliencie')==true);
}
//var podglad=document.querySelector('body:not(.action)');
//if(podglad){return;}
var stronasubst_tablica_tych_samych=new Array();
var stronasubst_tablica_rozdzialow=new Array();
var stronasubst_tablica_alternatywnych_nazw=new Array();
stronasubst_latex=((stronasubst_latex!==undefined)?stronasubst_latex:false);
stronasubst_mathml=((stronasubst_mathml!==undefined)?stronasubst_mathml:true);
stronasubst_opakuj_kategorie_ze_sortowaniem=((stronasubst_opakuj_kategorie_ze_sortowaniem!==undefined)?stronasubst_opakuj_kategorie_ze_sortowaniem:false);
stronasubst_przytnij_tekst=((stronasubst_przytnij_tekst!==undefined)?stronasubst_przytnij_tekst:true);
stronasubst_ukrywaj_toc=parseInt(((stronasubst_ukrywaj_toc!==undefined)?stronasubst_ukrywaj_toc:0));
stronasubst_ukrywaj_toc=((!isNaN(stronasubst_ukrywaj_toc))?stronasubst_ukrywaj_toc:0);
stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach=((stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach!==undefined)?stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach:true);
stronasubst_numerowanie_poszczegolnych_rozdzialow=((stronasubst_numerowanie_poszczegolnych_rozdzialow!==undefined)?stronasubst_numerowanie_poszczegolnych_rozdzialow:true);
stronasubst_aktualizowanie_nazw_artykulow=((stronasubst_aktualizowanie_nazw_artykulow!==undefined)?stronasubst_aktualizowanie_nazw_artykulow:true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami=((stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami!==undefined)?stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami:true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika=((stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika!==undefined)?stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika:false);
stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej=((stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej!==undefined)?stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej:true);
stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule=((stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule!==undefined)?stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule:false);
stronasubst_nie_usuwaj_styli=((stronasubst_nie_usuwaj_styli!==undefined)?stronasubst_nie_usuwaj_styli:true);
stronasubst_naprawiaj_naglowki=((stronasubst_naprawiaj_naglowki!==undefined)?stronasubst_naprawiaj_naglowki:false);
stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst=((stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst!==undefined)?stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst:true);
/**/
stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!=undefined)?stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true;
/**/
stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!=undefined)?stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true;
stronasubst_zapisz_dane_na_kliencie=(stronasubst_zapisz_dane_na_kliencie!=undefined)?stronasubst_zapisz_dane_na_kliencie:false;
/**/
var this_zmienna=this;
var NiePobranaStronaLubNieIstnieje=function(title,strona_hash,elements,muteks_stronasubst){
var tab_promise=new Array();
var a=document.createElement('a');/*Tworzenie linku*/
a.setAttribute('href',"/wiki/"+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(title));
$(a).html(strona_hash);
var subtitle=DodatkiSkrypt.Szereg.Napis.SubTitle(strona_hash)
var span=document.createElement('span');
$(span).append(a);
span.setAttribute("class","niw link");
var strong=document.createElement("strong");
$(strong).append(span);
var przed=document.createTextNode("{{:");
var po=document.createTextNode("}}");
$(span).before(przed);
$(strong).append(po);
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
for(var q in elements){
(function(q){
var element=elements[q];
$(element).html("");
$(element).append(strong);
$(element).css('display',"block");
var parent=element.parentNode;
if((parent!==null)&&(parent.tagName.toUpperCase()=="DIV")){
parent.style.display="block";
}
var pasek=element.parentNode.querySelector('.postęp_ładowania_artykułu');
if(pasek!==null){
element.parentNode.removeChild(pasek);
}
$(element).filter('.strona_subst').addClass("strona_subst_zanalizowane");
$(element).filter('.strona_subst').parent(".rozdział_książki").children('.mw-heading').children(hn).not(toc_h).attr("id_podstrona",subtitle);
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks));
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks));
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_stronasubst));
})(q);
}
return Promise.DodatkiSkryptAll(tab_promise);
}
var WikikodTitle=function(data,tabs,titles,tabstrona,muteks_stronasubst,tablica_przednaglowkowa_html,stronasubst_latex,stronasubst_mathml){
var title=data.parse.title;
var wikikod=data.parse.text['*'];
var t=data.parse.text.number;
var strona_hash=titles[t];
var elements=tabstrona[strona_hash];
if(wikikod==null){
return NiePobranaStronaLubNieIstnieje(title,strona_hash,elements,muteks_stronasubst);
}
var tab_promise_fun=new Array();
//var tab_promise=new Array();
for(var q in elements){
var element=elements[q];
$(element).parent().children(".postęp_ładowania_artykułu").remove();
$(element).css('display','block');
$(element).html(wikikod);
(function(element,title,titles){
tab_promise_fun.push(function(){return this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(element);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.ZamienianeAdresoweLinkoweReferencjiByByłyWskazywalneDoStronyAktualnej(element,title,titles);});
})(element,title,titles);
}
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);});
(function(elements,tabs,strona_hash,tablica_przednaglowkowa_html,stronasubst_tablica_alternatywnych_nazw,stronasubst_tablica_tych_samych,stronasubst_tablica_rozdzialow,stronasubst_latex,stronasubst_mathml){
tab_promise_fun.push(function(){
return DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(elements,tabs,strona_hash,tablica_przednaglowkowa_html,stronasubst_tablica_alternatywnych_nazw,stronasubst_tablica_tych_samych,stronasubst_tablica_rozdzialow,true,stronasubst_latex,stronasubst_mathml);
});
})(elements,tabs,strona_hash,tablica_przednaglowkowa_html,stronasubst_tablica_alternatywnych_nazw,stronasubst_tablica_tych_samych,stronasubst_tablica_rozdzialow,stronasubst_latex,stronasubst_mathml);
tab_promise_fun.push(function(){return DodatkiSkrypt.Nawigacja.createCollapseButtons(elements);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Nawigacja.createNavigationBarToggleButton(elements);});
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Strona.OdkywanieSpisuMateriiTOC();
//},null,muteks_stronasubst));
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Boksy.StickyXY();
//},null,muteks_stronasubst));
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Boksy.NotOverflowXY();
//},null,muteks_stronasubst));
/**/
if(stronasubst_numerowanie_poszczegolnych_rozdzialow){
for(var q in elements){
var element=elements[q];
(function(element){
var str_fun=$(element).parent().find("> div.mw-heading").first().find(" > span.numeracja");
if(str_fun.length>0){
var numer=$(str_fun[0]).html();
numer=DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(numer).replace(/\.$/g,"");
tab_promise_fun.push(function(){return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](NumerSubst,new Array("numer")).DodatkiSkryptThen(function(){
return NumerSubst.numer.NumerowanieNaglowkowStron(element,numer,true);
});
});
}
})(element);
}
}
//var strona_start=$(elements[0]).parents(".strona_start, .rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .artykułsubst");
//var rodzic=undefined;
//if((strona_start!==null)&&(strona_start.length>0)){
// rodzic=strona_start.get(0);
//}
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
//},null,muteks_stronasubst));
/**/
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);});
/**/
for(var q in elements){
var element=elements[q];
(function(element){
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.QuizIframe(element,title);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.PoprawianieNapisoweNumeruWprowadzeniaTekstu(element);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.ZmienianieNazwReferencjiNaNazwyProjektuWoluminu(element);});
if(stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach){
tab_promise_fun.push(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var muteks=new DodatkiSkrypt.Muteks();
var tab_promise_fun=new Array();
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks,strona_hash);});
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks,strona_hash);});
return DodatkiSkrypt.PoKoleiRozmieszczanieKorutyn(undefined,undefined,tab_promise_fun);
});
});
}
if(stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst){
tab_promise_fun.push(function(){
var muteks_szablon=new DodatkiSkrypt.Muteks();
return this_zmienna.AnalizujDalejSzablonSubst(element,muteks_szablon,strona_hash);
});
}
})(element);
}
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.PoKoleiRozmieszczanieKorutyn(undefined,undefined,tab_promise_fun);
},null,muteks_stronasubst);
}
var StronaSubstAnaliza=function(element_strony,wikikod,aktualna_strona,muteks_stronasubst){
var czy_wikikod=wikikod.match(/^[_\s]*$/g);
var strona_start=DodatkiSkrypt.Szereg.Styl.ElementRodzic('.strona_start');
if(czy_wikikod){
return;
}
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
var heading=DodatkiSkrypt.Szereg.Styl.HeadingHn();
element_strony=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element_strony);
var tab_promise=new Array();
var element_strony_przed=$(element_strony).find(hn).not(toc_h);
var element_parser=$(element_strony_przed).parents(DodatkiSkrypt.Szereg.IdCSS(1));
var tablica_przednaglowkowa_html=new Array();
(function(){
for (mw_parser_output of element_parser){
var iterator=DodatkiSkrypt.Szereg.Html.IteratorPotomkowyPoElemencieHtml(mw_parser_output,true);
while(true){
var element_html=iterator();
if(!element_html){break;}
if($(element_strony_przed).filter(element_html).length>0){return;};
var tagname=element_html.tagName;
var czy_headline=((tagname)&&(tagname.match(/^H\d+$/g)));
if(czy_headline){
var tekst_bez_stylow_bez_numeracji=DodatkiSkrypt.Szereg.Napis.KodHTMLProwadzeniaTekstu(element_html);
var tekst_bez_stylow=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(tekst_bez_stylow_bez_numeracji));
var id=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(tekst_bez_stylow);
/**/
tablica_przednaglowkowa_html[id]=(tablica_przednaglowkowa_html[id]||0)+1;
}
}
};
})();
var rozdzial_ksiazki="rozdział_książki";
var tagclass_1=$(element_strony).filter("."+rozdzial_ksiazki).not('.klasa_książki > .klasa_nagłówka > .rozdział_książki');
var tagclass_2=$(element_strony).filter('.klasa_książki').children('.klasa_nagłówka').children("."+rozdzial_ksiazki);
var tagclass=$(DodatkiSkrypt.DodatkiSkryptJQuery(tagclass_1,tagclass_2));
if(tagclass===null){
return null;
}
var liczba_elementow=tagclass.length;
if(liczba_elementow==0){
return null;
}
var titles=new Array();
var tabstrona=new Array();
var tabs=new Array();
var tab_section=new Array();
var tab_hn=new Array();
/**/
var edit_action=function(numer,strona,hn_element,link_strona,czy_link_nie_w_naglowku){
var div_heading=$(hn_element).closest('.mw-heading');
var heading=($(div_heading).length>0)?$(div_heading):$(hn_element);
var linkstrony_editsection=$(heading).children('.mw-editsection').first().get(0);
var czy_linkstrony_editsection=$(linkstrony_editsection).has('.stronasubst-edytuj').get(0);
if(!linkstrony_editsection){
var editsection=document.createElement('span');
$(editsection).addClass('mw-editsection');
$(heading).first().append(editsection);
}
var mw_editsection=$(heading).first().find('.mw-editsection');
if(czy_linkstrony_editsection==null){
var skin_mobilny=($('body.skin-minerva').length>0);
if(!skin_mobilny){
var bracket_poczatek=document.createElement('span');
$(bracket_poczatek).addClass('mw-editsection-bracket');
$(bracket_poczatek).html("[");
var a=document.createElement('a');
$(a).attr({
'href':"/w/index.php?title="+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(strona,false,true)+"&action=edit"+((numer>0)?("§ion="+numer):""),
'title':"Edytuj artykuł: "+link_strona,
'class':'stronasubst-edytuj',
});
$(a).html("edytuj");
var bracket_koniec=document.createElement('span');
$(bracket_koniec).addClass('mw-editsection-bracket');
$(bracket_koniec).html("]");
$(mw_editsection).append(bracket_poczatek);
$(mw_editsection).append(a)
$(mw_editsection).append(bracket_koniec);
}else{
var a=document.createElement('a');
$(a).attr({
'class':"cdx-button cdx-button--size-large cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--icon-only cdx-button--weight-quiet stronasubst-edytuj",
'role':'button',
'title':"Edytuj sekcję: "+link_strona,
'href':"/w/index.php?title="+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(strona,false,true)+"&action=edit"+((numer>0)?("§ion="+numer):"")
});
var span1=document.createElement('span');
$(span1).attr('class','minerva-icon minerva-icon--edit');
var span2=document.createElement('span');
$(span2).html("edytuj");
$(a).append(span1);
$(a).append(span2);
$(mw_editsection).append(a);
}
}
linkstrony_editsection=$(heading).children('.mw-editsection').first().has('.stronasubst-artykuł').get(0);
if(linkstrony_editsection==null){
var mw_editsection_bracket=$(mw_editsection).find('a').first().get(0);
if(mw_editsection_bracket!==null){
if(czy_link_nie_w_naglowku){
var skin_mobilny=($('body.skin-minerva').length>0);
if(!skin_mobilny){
var a=document.createElement('a');
$(a).html("artykuł");
$(a).attr({
"href":"/wiki/"+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(link_strona),
"title":"Zobacz artykuł: "+link_strona,
"class":"stronasubst-artykuł",
});
var span=document.createElement('span');
$(span).html("| ");
$(span).attr('class',"mw-editsection-bracket");
var czy_ma=$(mw_editsection_bracket).parent().hasClass('link');
if(czy_ma){
var rodzic_mw_editsection_bracket=$(mw_editsection_bracket).parent();
$(rodzic_mw_editsection_bracket).before(span);
var span2=$(rodzic_mw_editsection_bracket).prev();
if($(span2).length>0){
$(span2).before(a);
}else{
$(mw_editsection).append(a);
}
}else{
$(mw_editsection_bracket).before(span);
var span2=$(mw_editsection_bracket).prev();
if($(span2).length>0){
$(span2).before(a);
}else{
$(mw_editsection).append(a);
}
}
}else{
var a=document.createElement('a');
$(a).attr({
'class':"cdx-button cdx-button--size-large cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--icon-only cdx-button--weight-quiet stronasubst-artykuł",
'role':'button',
'title':"Zobacz artykuł: "+link_strona,
'href':"/wiki/"+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(link_strona)
});
var span1=document.createElement('span');
$(span1).attr('class','minerva-icon minerva-icon--link');
var span2=document.createElement('span');
$(span2).html("przejdź");
$(a).append(span1);
$(a).append(span2);
var mw_editsection_bracket=$(mw_editsection).find('a').first().get(0);
var czy_ma=$(mw_editsection_bracket).parent().hasClass('link');
if(czy_ma){
$(mw_editsection_bracket).parent().filter('.link').before(a);
}else{
$(mw_editsection_bracket).before(a);
}
}
}
}
}
$(heading).children('.mw-editsection').DodatkiSkryptEach(function(i,element){
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks,aktualna_strona));
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks,aktualna_strona));
});
}
/**/
var ZmienianieElementoweIndeksuStronyOrazSamegoTOC=function(data,muteks_wolumin,tab_section,__FUNKCJA){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var wikikod=data.parse.text['*'];
var c=data.parse.text.number;
if(/^\s*$/g.test(wikikod)){return;}
if(tab_section.length==0){return;}
var tab_c=tab_section[c];
if(typeof(tab_c)=="string"){return;}
if(tab_c.length!=undefined){
var headline=tab_c[0];
}else{
var headline=tab_c;
}
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
wikikod=__FUNKCJA(headline,wikikod,tab_c);
headline=DodatkiSkrypt.Szereg.Napis.ZmienianieNapisuWprowadzeniaTekstu(headline,wikikod);
DodatkiSkrypt.Strona.ZamienianieNazwyLinkuSpisuMateriiTOC(headline,true,stronasubst_latex);
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
if(stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach){
//var muteks=new DodatkiSkrypt.Muteks();
//return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var headline_nowe=headline;
if(headline_nowe){
var muteks=new DodatkiSkrypt.Muteks();
var tab_promise_fun=new Array();
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(headline_nowe,muteks,aktualna_strona);});
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(headline_nowe,muteks,aktualna_strona);});
return DodatkiSkrypt.PoKoleiRozmieszczanieKorutyn(undefined,undefined,tab_promise_fun);
}
});
}
},null,muteks_wolumin);
}
var muteks_wolumin=new DodatkiSkrypt.Muteks();
var tab_fun=new Array();
for (var i=0;i<liczba_elementow;++i){
var tagclassname=tagclass[i];
var szablon_subst_js=$(element_strony).find(".rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .szablon_subst_js.szablon_subst_js_zanalizowany");
var CzyOdrzucic=function(){
var potomek_analizowany=$(szablon_subst_js).find(tagclassname);
return (potomek_analizowany.length>0);
}
if(CzyOdrzucic()){continue;}
if(tagclassname.tagName.toUpperCase()!="DIV"){
return;
}
var class_element=$(tagclassname).children('.strona_subst');
var element;
if((class_element!==null)&&(class_element.length==1)){
element=class_element[0];
if(element.tagName.toUpperCase()!="DIV"){
return;
}
}else{
console.error("Wystąpił błąd: ", "Liczba elementów w div'ie, tzn. .strona_subst, jest nierówna jeden:",class_element.length);
return;
}
var czy_link_nie_w_naglowku;
var strona_headline=$(tagclassname).find("> "+heading+", > h1, > h2, > h3, > h4, > h5, > h6").not(toc_h);
var link_strona;
if((strona_headline!==null)&&(strona_headline.length==1)){
strona_a=$(strona_headline[0]).find('a');
if((strona_a!==null)&&(strona_a.length==1)){
link_strona=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(strona_a[0].getAttribute('href'));
if(link_strona!==null){
var re=/\/wiki\//g;
if(re.test(link_strona)){
link_strona=link_strona.substring(6,link_strona.length);
czy_link_nie_w_naglowku=false;
}else{
return;
}
}
}else{
link_strona=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(element).html()));
czy_link_nie_w_naglowku=true;
}
}else{
console.error("Wystąpił błąd: ", "Liczba nagłówków się nie zgadza, jest nierówna jeden!",strona_headline.length);
return;
}
var re = /^[_\s]*$/g;
var dopasowanie = re.test(link_strona);
if(dopasowanie){
return;
};
link_strona=link_strona.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ").replace(/&/g,"&").replace(/ /g," ");
var hash=link_strona.replace(/^([^#]*)#(.*)$/,"$2").replace(/&/g,"&").replace(/ /g,"_");
/**/
var hn_element=strona_headline[0];
if((hn_element===null)||(!hn_element.tagName.toUpperCase().match(/^H\d+$/g))){return;}
$(hn_element).closest('.mw-heading').children('.mw-editsection').remove();
$(hn_element).children('.mw-editsection').remove();
tab_section[i]=new Array(hn_element,link_strona,czy_link_nie_w_naglowku);
var strona=link_strona.match(/^[^#]*/g).toString();
/**/
var PraceIteracyjne=function(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i){
var tab_promise=new Array();
if(/#/g.test(link_strona)){
/**/
var hash=link_strona.replace(/^([^#]*)#(.*)$/g,"$2");
/**/
strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona);
hash=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(hash);
/**/
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|KtóraSekcjaStrony|"+strona+"|"+hash+"}}",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var wikikod=data.parse.text['*'];
var c=data.parse.text.number;
/**/
var tab_c=tab_section[c];
edit_action(parseInt(wikikod),tab_c[1].match(/^[^#]*/g).toString(),tab_c[0],tab_c[1],tab_c[2]);
},null,muteks_wolumin);
}).DodatkiSkryptCatch((error) => {}));
if(stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami){
if(!stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|ZwróćSekcjęNagłówkaStrony|"+strona+"|"+hash+"}}</div>",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_section,function(headline,wikikod,tab_c){
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod,function(wikikod){
wikikod=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod));
return wikikod;
});
return DodatkiSkrypt.Strona.LinkStrona(strona,hash,wikikod);
});
}).DodatkiSkryptCatch((error) => {}));
}else{
var uzupelniaj_sekcje_artykulow;
if(stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule){
uzupelniaj_sekcje_artykulow="tak";
}else{
uzupelniaj_sekcje_artykulow="";
}
link_strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(link_strona);
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:Ramka|Rozwiń|{{#invoke:StronicowyParser|LiniaArtykułuKsiążki|nazwa przestrzeni nazw=(main)|nazwa jednostki="+link_strona+"|analiza=tak|nagłówek=tak|uzupełniaj sekcje artykułów="+uzupelniaj_sekcje_artykulow+"|wyspecjalizowana=tak}}}}",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_section,function(headline,wikikod,tab_c){
var stare=tab_c[1];var nowe;
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod);
nowe=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod)),true);
stronasubst_tablica_alternatywnych_nazw[stare]=nowe;
var div=document.createElement('div');
$(div).html(wikikod);
var a=$(div).find('a');
if((a!==null)&&(a.length>0)){
$(a[0]).attr('title',stare);
}
return $(div).html();
});
}).DodatkiSkryptCatch((error) => {}));
}
}
}else{
edit_action(0,strona,hn_element,link_strona,czy_link_nie_w_naglowku);
if(stronasubst_aktualizowanie_nazw_artykulow){
strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona);
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:Ramka|Rozwiń|{{#invoke:StronicowyParser|LiniaArtykułuKsiążki|nazwa przestrzeni nazw=(main)|nazwa jednostki="+strona+"|analiza=tak|wyspecjalizowana=tak}}}}",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_section,function(headline,wikikod,tab_c){
var stare=tab_c[1];var nowe;
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod);
nowe=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod)),true);
stronasubst_tablica_alternatywnych_nazw[stare]=nowe;
return wikikod;
});
}).DodatkiSkryptCatch((error) => {}));
}
}
return Promise.DodatkiSkryptAll(tab_promise);
};
(function(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i){
tab_fun.push(function(){
return $(document).DodatkiSkryptSettledPromise(function(){
return PraceIteracyjne(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i);
});
});
})(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i);
/**/
tabs[i]=link_strona;
var czy=false;
for(var d in titles){
if(titles[d]==link_strona){
czy=true;
break;
}
}
if(!czy){
titles[titles.length]=link_strona;
}
if(tabstrona[link_strona]==null){
tabstrona[link_strona]=new Array();
}
var tab=tabstrona[link_strona];
var tablen=tab.length;
tabstrona[link_strona][tablen]=element;
}
/**/
var PraceNaglowki=function(){
var tab_promise=new Array();
if(element_strony==document){
var namespace=DodatkiSkrypt.Info.page.namespace;
var strona_podrecznika=((namespace!="")?(namespace+":"):"")+DodatkiSkrypt.Info.page.bookname;
}else{
var zaan=$(element_strony).parents('.rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .szablon_subst_js.szablon_subst_js_zanalizowany');
if((zaan!==null)&&(zaan.length>0)){
var strona=zaan[0].getAttribute('nazwa_strony');
if(strona){
var strona_podrecznika=DodatkiSkrypt.Nazwy.FULLBOOKNAME(strona);
}else{
var strona_podrecznika=DodatkiSkrypt.Nazwy.FULLBOOKNAME(aktualna_strona);
}
}else{
var strona_podrecznika=DodatkiSkrypt.Nazwy.FULLBOOKNAME(aktualna_strona);
}
}
strona_podrecznika=strona_podrecznika.replace(/[\s]+/g,"_");
strona_podrecznika=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona_podrecznika);
//var tab_promise=new Array();
var tab_klasa_ksiazki=new Array();
var klasa_ksiazki_1=$(element_strony).filter('.klasa_książki');
if(klasa_ksiazki_1.length>0){tab_klasa_ksiazki.push(klasa_ksiazki_1);}
var klasa_ksiazki_2=$(element_strony).find('.klasa_książki');
if(klasa_ksiazki_2.length>0){tab_klasa_ksiazki.push(klasa_ksiazki_2);}
var klasa_ksiazki=$(tab_klasa_ksiazki);
if(klasa_ksiazki.length>0){
var tab_naglowka=new Array();
var tab_hn=new Array();
for(var z=0;z<klasa_ksiazki.length;++z){
var pojedyncza_klasa_ksiazki=klasa_ksiazki[z];
var CzyOdrzucic=function(){
var potomek_analizowany=$(element_strony).find(".rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .szablon_subst_js.szablon_subst_js_zanalizowany").find(pojedyncza_klasa_ksiazki);
if(potomek_analizowany.length>0){return true;};
return false;
}
if(CzyOdrzucic()){continue;}
var dana_klasa_naglowka=$(pojedyncza_klasa_ksiazki).children('.klasa_nagłówka').children('.mw-heading').children(hn).not(toc_h);
if($(dana_klasa_naglowka).length>0){
$(dana_klasa_naglowka).DodatkiSkryptEach(function(g,element){
var naglowek=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(element).html())));
naglowek=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(naglowek);
var ww=1;
for(var x=0;x<tab_naglowka.length;++x){
if(tab_naglowka[x]==naglowek){
++ww;
}
}
naglowek=naglowek+((ww>1)?("_"+ww):"");
tab_naglowka[g]=naglowek;
tab_hn[g]=element;
if($(element).parent().parent().parent().hasClass('klasa_książki')){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|KtóraSekcjaStrony|"+strona_podrecznika+"|"+naglowek+"}}",aktualna_strona,null,true,g,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
//var muteks=new DodatkiSkrypt.Muteks();
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var wikikod=data.parse.text['*'];
var c=data.parse.text.number;
var nazwa_podrecznika=strona_podrecznika.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ")
var naglowek_sekcji_podrecznika=tab_naglowka[c].replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ")
edit_action(parseInt(wikikod),nazwa_podrecznika,tab_hn[c],nazwa_podrecznika+"#"+naglowek_sekcji_podrecznika,true);
},null,muteks_wolumin);
}).DodatkiSkryptCatch((error) => {}));
if(stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|ZwróćSekcjęNagłówkaStrony|"+strona_podrecznika+"|"+naglowek+"}}",aktualna_strona,null,true,g,null,null,null,null,stronasubst_zapisz_dane_na_kliencie)
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_hn,function(headline,wikikod,tab_c){
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod,function(wikikod){
wikikod=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod));
return wikikod;
});
return wikikod;
});
}).DodatkiSkryptCatch((error) => {}));
}
}
//++g;
});
}
}
}
return Promise.DodatkiSkryptAll(tab_promise);
}
tab_fun.push(function(){
return $(document).DodatkiSkryptSettledPromise(function(){
return PraceNaglowki();
});
});
/**/
var RozwazajNaglowki=function(){
var toc_fun=new DodatkiSkrypt.Strona.ListaNodeTOC(element_strony);
if((toc_fun.toc!==null)&&(toc_fun.toc.length>0)){
for(var w=0;w<toc_fun.toc.length;++w){
var czy_side_bar_toc=toc_fun.CzySideBarToc(toc_fun.toc[w]);
var ile_jest=0;
var li=$(toc_fun.toc[w]).find('li');
if((li!==null)&&(li.length>0)){
for(var dd=0;dd<li.length;++dd){
var element_li=li[dd];
var tocnumber;var toctext_wartosc;
if(czy_side_bar_toc){
tocnumber=$(element_li).find('.vector-toc-numb').first()[0];
if(!tocnumber){continue;}
toctext_wartosc=$(element_li).find('.vector-toc-text').first().html().replace(new RegExp(DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(tocnumber.outerHTML),"g"),"");
}else{
tocnumber=$(element_li).find('.tocnumber').first()[0];
toctext_wartosc=$(element_li).find('.toctext').first().html();
}
if((tocnumber)&&(toctext_wartosc)){
var czy_jest=undefined;
var klasa_naglowka=$(element_strony).find('.klasa_nagłówka');
if((klasa_naglowka)&&(klasa_naglowka.length>0)&&(klasa_naglowka[ile_jest])){
var element_klasa_naglowka=klasa_naglowka[ile_jest];
var headline=$(element_klasa_naglowka).find(hn).not(toc_h).first()[0];
if((headline)
&&(headline.tagName.toUpperCase().match(/^H\d+$/))
&&(headline.parentNode!=null)
&&(headline.parentNode.tagName.toUpperCase()=="DIV")
&&($(headline).closest('.mw-heading').parent()[0]===element_klasa_naglowka)
){
var element_a;
if(czy_side_bar_toc){
element_a=$(tocnumber).parent().parent().get(0);
}else{
element_a=$(tocnumber).parent().get(0);
}
if(element_a.tagName.toUpperCase()=="A"){
var href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(element_a.getAttribute('href'));
if(href!==null){
href=DodatkiSkrypt.Szereg.Napis.PoprawianieNazwyIdLubHref(href,true);
var id_headline=$(headline).attr('id');
if(id_headline!==null){
id_headline=DodatkiSkrypt.Szereg.Napis.PoprawianieNazwyIdLubHref(id_headline);
if(href!=id_headline){czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
if(czy_jest===undefined){ile_jest+=1;}
if((czy_jest===undefined)||(!czy_jest)){
var element_toctext=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(toctext_wartosc)).replace(/<[^<>]+>/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ");
if(stronasubst_tablica_rozdzialow[element_toctext]==null){
stronasubst_tablica_rozdzialow[element_toctext]=new Array(tocnumber);
}else{
stronasubst_tablica_rozdzialow[element_toctext].push(tocnumber);
}
}
}
}
}
}
}
}
/**/
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return RozwazajNaglowki();
},null,muteks_stronasubst));
/**/
var Strona=function(strona){
var strona_re=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(strona);
var re=new RegExp("^\\s*"+strona_re+"\\s*#","g");
return re;
}
var CzyArtykulyZNaglowkamiDlaStrony=function(re){
for(var s in titles){
var czy_hash=titles[s].match(re);
if(czy_hash){
return true;
}
}
return false;
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var toc_fun=new DodatkiSkrypt.Strona.ListaNodeTOC(element_strony);
DodatkiSkrypt.Strona.UstawParametryUstawienioweTOC(toc_fun.toc,stronasubst_ukrywaj_toc,stronasubst_mathml);
},null,muteks_stronasubst));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab_promise=new Array();
for ( var t in titles ) {
var strona=titles[t].match(/^[^#]*/g).toString();
var szablon_artykulu;
var re_strona=Strona(strona);
var czy_naglowki=CzyArtykulyZNaglowkamiDlaStrony(re_strona);
if(!czy_naglowki){
strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona);
szablon_artykulu="{{:"+strona+"}}";
}else{
/*---------------------------------*/
var rozdzial1=null;
var re=/^([^#]*)#(.*)$/g;
if(re.test(titles[t])){
rozdzial1=titles[t].replace(re,"$2");
rozdzial1=rozdzial1.replace(/&/g,"&").replace(/ /g," ").replace(/<i>/g,"''").replace(/<\/i>/g,"''").replace(/<b>/g,"'''").replace(/<\/b>/g,"'''");
rozdzial1=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(rozdzial1);
}else{rozdzial1="";}
var rozdzial2=null;
var tit=titles[parseInt(t)+1];
if( tit && re.test(tit) && re_strona.test(tit)){
rozdzial2=tit.replace(re,"$2");
rozdzial2=rozdzial2.replace(/&/g,"&").replace(/ /g," ").replace(/<i>/g,"''").replace(/<\/i>/g,"''").replace(/<b>/g,"'''").replace(/<\/b>/g,"'''");
rozdzial2=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(rozdzial2);
}else{rozdzial2="";}
/*-- -------------------------*/
szablon_artykulu="{{#invoke:Ramka|Rozwiń|{{#invoke:StronicowyParser|TekstRozdziałuStrony|"+strona+"|"+rozdzial1+"|"+rozdzial2+"}}}}";
}
//szablon_artykulu="{{PrzytnijTekst|"+szablon_artykulu+"}}";
//if(stronasubst_opakuj_kategorie_ze_sortowaniem){
// szablon_artykulu="{{OpakujKategorieZeSortowaniem|"+szablon_artykulu+"}}";
//}
(function(szablon_artykulu,strona,t){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(szablon_artykulu,strona,null,true,t,stronasubst_opakuj_kategorie_ze_sortowaniem,stronasubst_przytnij_tekst,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(
promise.DodatkiSkryptThen(function(data){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
return WikikodTitle(data,tabs,titles,tabstrona,muteks,tablica_przednaglowkowa_html,stronasubst_latex,stronasubst_mathml);
},null,muteks_wolumin);
}).DodatkiSkryptCatch(function(data){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var strona_hash=titles[t];
var elements=tabstrona[strona_hash];
var muteks=new DodatkiSkrypt.Muteks();
return NiePobranaStronaLubNieIstnieje(strona,strona_hash,elements,muteks);
},null,muteks_wolumin);
}));
})(szablon_artykulu,strona,t);
}
tab_fun.forEach(function(element_fun){
tab_promise.push($(document).DodatkiSkryptSetTimeOut(function(){
return element_fun();
},0));
})
return Promise.DodatkiSkryptAll(tab_promise);
},null,muteks_stronasubst));
return Promise.DodatkiSkryptAll(tab_promise);
}
//this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod,)
this.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera=function(wikikod,funkcja1,funkcja2){
if(!stronasubst_nie_usuwaj_styli){
wikikod=DodatkiSkrypt.Szereg.Styl.PrzeniesienieStyloweHTMLNaStartStronyParsera(wikikod);
wikikod=funkcja1?funkcja1(wikikod):wikikod;
}else{
wikikod=DodatkiSkrypt.Szereg.Styl.EwentualneUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod);
wikikod=funkcja2?funkcja2(wikikod):wikikod;
}
return wikikod;
}
this.NaprawianieNapisuWprowadzeniaTekstuStrony=function(){
if(stronasubst_naprawiaj_naglowki){
DodatkiSkrypt.Strona.NaprawianieNapisuWprowadzeniaTekstu();
}
}
this.UruchomBiegUruchamaniaStrony=function(){
if(!stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.ProgressStrony.UstawianieWidokuEwolucji();
}
}
this.AnalizujDalejSzablonSubst=function(element_strony_szablonu,muteks_szablon,strona_hash){
element_strony_szablonu=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element_strony_szablonu);
var tab_promise=new Array();
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](SzablonSubst,new Array("szablony")).DodatkiSkryptThen(function(){
return SzablonSubst.szablony.PobierzSzablon(element_strony_szablonu,undefined,undefined,strona_hash);
});
},null,muteks_szablon));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var rodzic_szablon_subst_js_szablonu=DodatkiSkrypt.Scribunto.StronicowyParser.PoliczPodAleNiePodPodRodzica(element_strony_szablonu,true);
if($(rodzic_szablon_subst_js_szablonu).length>0){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Nawigacja.createCollapseButtons(rodzic_szablon_subst_js_szablonu);
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Nawigacja.createNavigationBarToggleButton(rodzic_szablon_subst_js_szablonu);
},null,muteks));
}
return Promise.DodatkiSkryptAll(tab_promise);
},null,muteks_szablon));
var promise=tab_promise.at(0);
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return promise.DodatkiSkryptThen(function(element_strony){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var rodzic_szablon_subst_js=DodatkiSkrypt.Scribunto.StronicowyParser.ElementyOpakowaniaSzablonSubst(element_strony,true);
$(rodzic_szablon_subst_js).DodatkiSkryptEach(function(i,element){
this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(element);
var nazwa_strony=$(element).attr('nazwa_strony');
/**/
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var toc_fun=new DodatkiSkrypt.Strona.ListaNodeTOC(element);
DodatkiSkrypt.Strona.UstawParametryUstawienioweTOC(toc_fun.toc,stronasubst_ukrywaj_toc,stronasubst_mathml);
},null,muteks));
/**/
if(nazwa_strony){
var strona_start_parent=new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode(element);
if(
(strona_start_parent.CzyElementRodzicJestStronaStart())
&&((new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode()).CzyTenElementMaStronaStartToc(element))
){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
var strona_start_rodzic=strona_start_parent.ElementKontenerowyStronaStart();
var strona_start_rodzic_node=$(strona_start_rodzic).get(0);
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(new Array(strona_start_rodzic_node),new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
},null,muteks));
}else{
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
DodatkiSkrypt.Strona.TworzenieSpisuRzeczyVectorStickyTOC();
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(undefined,new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
/**/
DodatkiSkrypt.Strona.AktualizacjaZdarzeniowaMenowaWektorowaBudowyStrony();
},null,muteks));
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var str_strona_start_dziecko=$(element).find('.strona_start');
if($(str_strona_start_dziecko).length>0){
for(var strona_start_dziecko of $(str_strona_start_dziecko)){
var strona_start_dziecko_filtr=new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode(strona_start_dziecko);
if(
(strona_start_dziecko_filtr.CzyElementRodzicJestStronaStart())
&&((new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode()).CzyTenElementMaStronaStartToc(strona_start_dziecko))
){
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
var strona_start_dziecko_node=strona_start_dziecko_filtr.ElementKontenerowyStronaStart().get(0);
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(new Array(strona_start_dziecko_node),new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
}
}
}
},null,muteks));
///tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// DodatkiSkrypt.Strona.OdkywanieSpisuMateriiTOC();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Boksy.StickyXY();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
//return DodatkiSkrypt.Boksy.NotOverflowXY();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
/// return DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
//},null,muteks));
}else{
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
},null,muteks));
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.Strona.QuizIframe(element,nazwa_strony||DodatkiSkrypt.Info.page.fullname);
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab_promise=new Array();
var fullname=((nazwa_strony)?(nazwa_strony):(DodatkiSkrypt.Info.page.fullname));
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
return this_zmienna.CzyStronaSubst(element,fullname,true,muteks,true);
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
return this_zmienna.ZbiorczaStrona(element,fullname,muteks,true,this_zmienna.CzyStronaSubst);
},null,muteks));
return Promise.DodatkiSkryptAll(tab_promise);
},null,muteks));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_szablon));
return Promise.DodatkiSkryptAll(tab_promise);
}
this.KompleksoweAktualizowanieSpisuMateriiStrony=function(nazwa_strony){
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(undefined,new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
return DodatkiSkrypt.Strona.AktualizacjaZdarzeniowaMenowaWektorowaBudowyStrony().DodatkiSkryptThen(function(){
/**/
var strona_start=DodatkiSkrypt.Szereg.Styl.ElementRodzic('.strona_start .ciało_strona');
if(strona_start.length>0){
for(var str_strona_start of strona_start){
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(new Array(str_strona_start),new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
}
}
});
}
this.CzyStronaSubst=function(element,aktualna_strona,czy_szablon_subst,muteks_szablon, czy_nie_koniec){
element=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element);
var promise=DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
var tab_promise=new Array();
if((wikikod)||(czy_szablon_subst)){
if(stronasubst_numerowanie_poszczegolnych_rozdzialow){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](NumerSubst,new Array("numer")).DodatkiSkryptThen(function(){
var artykul=DodatkiSkrypt.Nazwy.ARTICLENAME(aktualna_strona);
return NumerSubst.numer.NumerujRozdzialyArtykulu(element,artykul,aktualna_strona);
});
},null,muteks_szablon));
};
if(stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks,aktualna_strona));
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks,aktualna_strona));
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_szablon));
}
}
if(!czy_nie_koniec){
return Promise.DodatkiSkryptAll(tab_promise).DodatkiSkryptThen(function(){
if(wikikod){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks_szablon=new DodatkiSkrypt.Muteks();
return StronaSubstAnaliza(element,wikikod,aktualna_strona,muteks_szablon);
},null,muteks_szablon);
};
});
}
});
return promise;
}
this.ZbiorczaStrona=function(id_numerowanie,aktualna_strona,muteks,czy_tak_function,__function){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var funkcja=function(){
id_numerowanie=DodatkiSkrypt.Szereg.Styl.ElementRodzic(id_numerowanie);
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,id_numerowanie).DodatkiSkryptThen(function(data){
if((data)&&(data!=="")){
DodatkiSkrypt.ProgressStrony.UstawianieWidokuEwolucji();
}
}).DodatkiSkryptThen(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
$(id_numerowanie).DodatkiSkryptEach(function(i,id_element){
var tab_elements=new Array();
$(id_element).find(".rozdział_książki").DodatkiSkryptEach(function(i,element){
var str_rozdzial=$(id_element).find('.klasa_książki').children('.klasa_nagłówka').children(element);
if(str_rozdzial.length==0){
var parent=$(element).get(0);
if((parent)&&(($(tab_elements).filter(parent).length==0)/*||($(tabs).find(parent).length==0)*/)){
tab_elements.push(parent);
}
}
});
var str_element=$(id_element).find('.klasa_książki');
if(str_element.length>0){
str_element.DodatkiSkryptEach(function(i,element){
tab_elements.push(element);
});
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
var tab_str=$(tab_elements);
if(tab_str.length>0){
return __function(tab_str,aktualna_strona,czy_tak_function,muteks);
}
},null,muteks));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
}
if(stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
var muteks=new DodatkiSkrypt.PustyMuteks();
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
},null,muteks);
}
});
}else{
return funkcja();
}
},null,muteks);
}
};
KategorieSubst.KategorieSubst=function(){
var gadget_uruchom_obsluge_kategorie;
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_kategoriesubst){
czy_nie_gconfig_kategoriesubst=true;
mw.messages.set({
'KategorieSubst-name': 'Obsługa kategorii',
'KategorieSubst-description-page': 'Wikibooks:StronicowyParser',
'KategorieSubst-uruchom-kategorie': 'Uruchom dodatkową obsługę kategorii.',
});
gConfig.register('KategorieSubst', {name: mw.msg('KategorieSubst-name'), descriptionPage: mw.msg('KategorieSubst-description-page')}, [
{
name: 'uruchom-kategorie',
desc: mw.msg('KategorieSubst-uruchom-kategorie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_KategorieSubst-uruchom-kategorie']
}]);
gadget_uruchom_obsluge_kategorie=(gConfig.get('KategorieSubst', 'uruchom-kategorie')==true);
}
}
gadget_uruchom_obsluge_kategorie=(gadget_uruchom_obsluge_kategorie!==undefined)?gadget_uruchom_obsluge_kategorie:false;
var tabela_sortkey_promise=undefined;
var this_zmienna=this;
var tab_kategorie_strony_pliki={0:'subcat',1:'page',2:'file',};
var TworzenieTablicyTytułowejNazwSortowaniaStron=function(fullname,jakie_pozycje_kategorii){
var params = {
action: 'query',
list: 'categorymembers',
cmtitle: fullname,
cmlimit: 5000,
cmprop: 'title|sortkeyprefix',
cmtype: tab_kategorie_strony_pliki[jakie_pozycje_kategorii],
format: 'json',
smaxage: 600,
maxage: 600,
};
return DodatkiSkrypt.api.ZadaniaApi(params).DodatkiSkryptThen(function(data){
var tab=new Array();
var category = data.query.categorymembers;
for(var cat in category){
var categorymembers=category[cat];
var title=categorymembers.title;
var sortkey=categorymembers.sortkeyprefix;
tab[DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(title)]=sortkey;
}
return tab;
}).DodatkiSkryptCatch(function(error){return Promise.reject(error);});
}
var PobierzInformacjePlikowe=function(plik){
var params={
action: 'query',
format: 'json',
prop: 'imageinfo',
iiprop: 'url|size',
iiurlwidth: 85,
titles: plik,
smaxage: 600,
maxage: 600,
};
return DodatkiSkrypt.api.ZadaniaApi(params).DodatkiSkryptThen(function(data){
var pages=data.query.pages;
for(var p in pages){
var imageinfo=pages[p].imageinfo[0];
var width=imageinfo.width;
var height=imageinfo.height;
var size=imageinfo.size;
var url=((imageinfo.thumburl)?(imageinfo.thumburl.replace(/^[Hh][Tt][Tt][Pp][Ss]?:\/\//g,"//")):(imageinfo.url.replace(/^[Hh][Tt][Tt][Pp][Ss]?:\/\//g,"//")));
if(size/1024<1){
var size_new=size+" B";
}else if(size/1024<1024){
var size_new=parseInt(size/1024*100)/100+" KB";
}else if(size/1024/1024<1024){
var size_new=Math.round(size/1024/1024*100)/100+" MB";
}else if(size/1024/1024/1024<1024){
var size_new=Math.round(size/1024/1024/1024*100)/100+" GB";
}else{
var size_new=size+" B";
}
return Promise.resolve([width,height,size_new,url])
}
return Promise.reject(data);
}).DodatkiSkryptCatch(function(error){return Promise.reject(error);});
}
var IleStronKategoriiPlikowJestWDanejKategorii=function(fullname){
var params={
action: 'query',
format: 'json',
titles: fullname,
prop: 'categoryinfo'
};
return DodatkiSkrypt.api.ZadaniaApi(params).DodatkiSkryptThen(function(data){
if((data)&&(data.query)&&(data.query.pages)){
var pages = data.query.pages;
for (page in pages){
var categoryinfo=pages[page].categoryinfo;
if(categoryinfo){
return Promise.resolve([categoryinfo.subcats||0,categoryinfo.pages||0,categoryinfo.files||0]);
}
}
}
return Promise.resolve([0,0,0]);
}).DodatkiSkryptCatch(function(error){return Promise.reject(error);});
}
var IleJestKategoriiStronIPlikowWKategorii=function(href,__function){
var promise_kategorie_ustawienia=DodatkiSkrypt.DodatkiSkryptUserOption.get(href,"CzłonkowieKategorii:");
return promise_kategorie_ustawienia.DodatkiSkryptThen(function(data_ustawienia){
if(!data_ustawienia){return;}
var promise_kategorie=IleStronKategoriiPlikowJestWDanejKategorii(href);
return promise_kategorie.DodatkiSkryptThen(function(data_faktycznie){
var ile_kategorii=data_faktycznie[0];var ile_stron=data_faktycznie[1];var ile_plikow=data_faktycznie[2];
var tab_strony=data_ustawienia.split("||");
for(var i=0;i<tab_strony.length;++i){
var strona;var sortkey;var numer_porzadku;var przestrzen;var nazwa;
var strona_sort=tab_strony[i];
var tab_strona_sort=strona_sort.split("|");
var kategoria_strona_plik=tab_strona_sort[0];
var czy_kategoria=/^[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]:/g.test(kategoria_strona_plik);
if(czy_kategoria){
++ile_kategorii;
}else{
var czy_plik=/^[Pp][Ll][Ii][Kk]:/g.test(kategoria_strona_plik);
if(czy_plik){
++ile_plikow;
}else{
++ile_stron;
}
}
}
return __function(ile_kategorii,ile_stron,ile_plikow)
});
});
}
var WstawPozycjeNaStronieKategoriiWedleDanychStron=function(fullname,numer_porzadku,wezel,przestrzen,pozycja,nazwa,czy_zagniezdzone,media,kategorie){
if(!tabela_sortkey_promise){tabela_sortkey_promise=new Array();};
if(!tabela_sortkey_promise[fullname]){tabela_sortkey_promise[fullname]=new Array();};
tabela_sortkey_promise[fullname][numer_porzadku]=(!tabela_sortkey_promise[fullname][numer_porzadku])?(TworzenieTablicyTytułowejNazwSortowaniaStron(DodatkiSkrypt.Info.page.fullname,0)):tabela_sortkey_promise[fullname][numer_porzadku];
return tabela_sortkey_promise[fullname][numer_porzadku].DodatkiSkryptThen(function(tabela_sortkey){
if(!czy_zagniezdzone){
if(numer_porzadku!=2){
var category_a=$(wezel).find('> ul:last-child > li').find(' > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeBullet + bdi > a, > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeEmptyBullet + bdi > a');
}else{
var category_a=$(media||kategorie).find(' > ul.gallery > li.gallerybox > div.gallerytext > a.galleryfilename');
}
}else{
var category_a=$(wezel).find(' > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeBullet + bdi > a, > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeEmptyBullet + bdi > a');
}
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var czy_koniec=false;
for(var p=0;p<category_a.length;++p){
var element_a=category_a[p];
var pozycja_a=element_a.innerHTML;
if(pozycja_a==pozycja){
if(!czy_zagniezdzone){
var li=$(element_a).closest('li');
}else{
var li=$(element_a).closest('div.CategoryTreeSection');
}
$(li).remove();
}
}
for(var p=0;p<=category_a.length;++p){
(function(p,category_a){
if(numer_porzadku==0){
if(category_a.length==0){
var modul1=(!czy_zagniezdzone)?DodatkiSkrypt.UruchomPobranePliki('ext.categoryTree.styles'):null;
var modul2=(!czy_zagniezdzone)?DodatkiSkrypt.UruchomPobranePliki('ext.categoryTree'):null;
}
}else if(numer_porzadku==2){
var modul1=(!czy_zagniezdzone)?DodatkiSkrypt.UruchomPobranePliki('mediawiki.page.gallery.styles'):null;
var modul2=null;//=DodatkiSkrypt.UruchomPobranePliki('mmv');
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
if(czy_koniec){return;}
var category_li;
var promise_strony=Promise.all([null,null,modul1,modul2]);
if(p<category_a.length){
var element_a=category_a[p];
var pozycja_a=element_a.innerHTML;
if(numer_porzadku==1){
var promise_przestrzen=DodatkiSkrypt.Scribunto.Nazwy.NAZWAPRZESTRZENI(pozycja_a);
var promise_nazwa=DodatkiSkrypt.Scribunto.Nazwy.NAZWASTRONY(pozycja_a);
}else{
var promise_przestrzen=Promise.resolve("");
var promise_nazwa=Promise.resolve(pozycja_a);
}
promise_strony=Promise.all([promise_przestrzen,promise_nazwa,modul1,modul2]).DodatkiSkryptThen(function(data){
var przestrzen_strony=data[0];var nazwa_strony=data[1];
var nazwa_a=(tabela_sortkey[(((numer_porzadku==0)||(numer_porzadku==2))?(przestrzen+":"):"")+pozycja_a]||"")+nazwa_strony+((numer_porzadku==1 )?przestrzen_strony:(""));
var tabs=(new Array(nazwa,nazwa_a)).sort();
if(nazwa==tabs[0]){
category_li=$(element_a).closest((!czy_zagniezdzone)?('li'):('div.CategoryTreeSection'));
}
return Promise.resolve(data);
});
}
return promise_strony.DodatkiSkryptThen(function(data){
var przestrzen_strony=data[0];var nazwa_strony=data[1];
if((category_a.length==p)||(category_li)){
var element_wezla;
var strona=(((przestrzen)&&(przestrzen!=""))?(przestrzen+":"):"")+pozycja;
if(numer_porzadku==0){
var promise_wezel=IleStronKategoriiPlikowJestWDanejKategorii(przestrzen+":"+pozycja);
}else{
var promise_wezel=Promise.resolve();
}
return promise_wezel.DodatkiSkryptThen(function(data){
if(numer_porzadku==0){
var ile_kategorii=data[0];var ile_stron=data[1];var ile_plikow=data[2];
var tabela_napis=new Array();
if(ile_kategorii>0){tabela_napis.push(ile_kategorii+" kat.");};
if(ile_plikow){tabela_napis.push(ile_plikow+" str.");};
if(ile_stron>0){tabela_napis.push(ile_stron+" pl.")};
var napis;
if(tabela_napis.length>0){napis=tabela_napis.join(", ");}else{napis="pusta";};
napis="("+napis+")";
var category_tree_section=mw.html.element('div',{'class':'CategoryTreeSection'},
new mw.html.Raw(mw.html.element('div',{'class':'CategoryTreeItem'},
new mw.html.Raw(((tabela_napis.length>0)?(mw.html.element('span',{'class':'CategoryTreeBullet'},
new mw.html.Raw(mw.html.element('a',{'class':'CategoryTreeToggle','data-ct-title':DodatkiSkrypt.Szereg.Kodowanie.EncodeWiki(pozycja),'aria-expanded':"false",'data-ct-state':"collapsed" ,'title':'rozwiń'},"")+" "))):(mw.html.element('span',{'class':'CategoryTreeEmptyBullet'},"")+" "))
+mw.html.element("bdi",{"dir":"ltr"},new mw.html.Raw(mw.html.element('a',{'href':'/wiki/'+strona,'title':strona},pozycja)))+" "
+mw.html.element('span',{'title':'Zawiera '+ile_kategorii+' podkategorii, '+ile_stron+' stron i '+ile_plikow+' plików','dir':'ltr'},napis))
)+mw.html.element('div',{'class':'CategoryTreeChildren','style':'display:none'},"")));
if(!czy_zagniezdzone){
element_wezla=mw.html.element('li',{},new mw.html.Raw(category_tree_section));
}else{
element_wezla=category_tree_section;
}
}else if(numer_porzadku==1){
element_wezla=mw.html.element('li',{},new mw.html.Raw(mw.html.element('a',{'href':"/wiki/"+strona,'title':strona},strona)));
}else{
return PobierzInformacjePlikowe(strona).DodatkiSkryptThen(function(data){
var width=data[0];var height=data[1];size=data[2];url=data[3];
if(width>height){
var new_height=parseInt((height/width)*120);
var src_width=120;
var src_height=new_height;
}else{
var new_width=parseInt((width/height)*120);
src_width=new_width;
src_height=120;
}
element_wezla=mw.html.element('li',{'class':'gallerybox','style':'155px'},new mw.html.Raw(
mw.html.element('div',{'class':'thumb','style':'width:150px;height:150px;'},
new mw.html.Raw(mw.html.element('span',{'typeof':'mw:File'},
new mw.html.Raw(mw.html.element('a',{'class':'"mw-file-description"','href':'/wiki/'+strona},
new mw.html.Raw(mw.html.element('img',
{
'alt':strona,
'src':url,
'decoding':"async",
'loading':'lazy',
'width':src_width,
'height':src_height,
"data-file-width":width,
"data-file-height":height
})))))
))+mw.html.element('div',{'class':'gallerytext'},
new mw.html.Raw(mw.html.element('a',{'class':'galleryfilename galleryfilename-truncate','href':'/wiki/'+strona},pozycja)+width+' × '+height+'; '+size+mw.html.element('br')))
)
);
});
}
}).DodatkiSkryptThen(function(){
if(category_li){
var div=document.createElement('div');
div.innerHTML=element_wezla;
$(category_li[0]).before(div.firstChild);
czy_koniec=true;
}else{
if(category_a.length>0){
var div=document.createElement('div');
div.innerHTML=element_wezla;
var ul=$(category_a).closest((!czy_zagniezdzone)?('ul'):('div.CategoryTreeChildren'));
$(ul).append(div.firstChild);
czy_koniec=true;
}else{
if(!czy_zagniezdzone){
var element_wezla_pustego=mw.html.element('ul',((numer_porzadku==2)?{'class':'gallery mw-gallery-traditional'}:{}),new mw.html.Raw(element_wezla));
}else{
var element_wezla_pustego=element_wezla;
$(wezel).find(' > .CategoryTreeNotice').remove();
}
var div=document.createElement('div');
div.innerHTML=element_wezla_pustego;
if(numer_porzadku!=2){
$(wezel).append(div.firstChild);
}else{
$(kategorie||media).append(div.firstChild);
}
czy_koniec=true;
}
}
});
}
});
},null,muteks));
})(p,category_a);
}
return Promise.all(tab_promise);
})
}
this.DodawanieDoStrukturyKategoriiInneStronyZerowegoStopniaRozbudowy=function(pozycja,przestrzen,sortkey){
var ns_14=$('body.ns-14');
if(ns_14.length>0){
var tab={"Kategoria":0,"Plik":2,};
var numer_porzadku=(tab[przestrzen]!=undefined)?tab[przestrzen]:1;
pozycja=pozycja.charAt(0).toUpperCase()+pozycja.slice(1);
var id=((numer_porzadku==0)?('mw-subcategories'):((numer_porzadku==2)?('mw-category-media'):('mw-pages')));
var element_category_generated=$(DodatkiSkrypt.Szereg.IdCSS(3)).first()[0];
var pagename=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(DodatkiSkrypt.Info.page.pagename);
if(!element_category_generated){
element_category_generated=mw.html.element('div',{'class':'mw-category-generated','lang':'pl','dir':'ltr'},
new mw.html.Raw(mw.html.element('div',{'id':id,},
new mw.html.Raw(mw.html.element('h2',{},((numer_porzadku==0)?("Podkategorie"):((numer_porzadku==1)?("Strony w kategorii „"+pagename+"”"):("Pliki w kategorii „"+pagename+"”"))))+mw.html.element('p',{},((numer_porzadku==0)?("Poniżej wyświetlono 0 spośród wszystkich 0 podkategorii tej kategorii."):((numer_porzadku==1)?("Poniżej wyświetlono 0 spośród wszystkich 0 stron tej kategorii."):("Poniżej wyświetlono 0 spośród wszystkich 0 plików w tej kategorii. "))))+((numer_porzadku<2)?(mw.html.element('div',{'class':'mw-content-ltr','lang':'pl','dir':'ltr',},new mw.html.Raw(mw.html.element('div',{'class':'mw-category'},"")))):(""))))
)
);
var element_div=document.createElement('div');
element_div.innerHTML=element_category_generated;
var mw_content_text=document.querySelector(DodatkiSkrypt.Szereg.IdCSS(2));
var element=$(DodatkiSkrypt.Szereg.IdCSS(2)).find('> .mw-parser-output + :not(.mw-parser-output)').first()[0];
if(element){
element_category_generated=$(element).DodatkiSkryptBefore(element_div.firstChild)[0];
}else{
element_category_generated=$(mw_content_text).DodatkiSkryptAppend(element_div.firstChild)[0];
}
}else{
var sub=$(element_category_generated).children('p:only-child');
$(sub).remove();
var subcategories=$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #mw-subcategories').first()[0];
var pages=$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #mw-pages').first()[0];
var media=$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #mw-category-media').first()[0];
var kategorie=((numer_porzadku==0)?(subcategories):((numer_porzadku==1)?(pages):(media)));
if(!kategorie){
var kategorie=mw.html.element('div',{'id':id,},
new mw.html.Raw(mw.html.element('h2',{},((numer_porzadku==0)?("Podkategorie"):((numer_porzadku==1)?("Strony w kategorii „"+pagename+"”"):("Pliki w kategorii „"+pagename+"”"))))+mw.html.element('p',{},((numer_porzadku==0)?("Poniżej wyświetlono 0 spośród wszystkich 0 podkategorii tej kategorii."):((numer_porzadku==1)?("Poniżej wyświetlono 0 spośród wszystkich 0 stron tej kategorii."):("Poniżej wyświetlono 0 spośród wszystkich 0 plików w tej kategorii."))))+((numer_porzadku<2)?(mw.html.element('div',{'class':'mw-content-ltr','lang':'pl','dir':'ltr',},new mw.html.Raw(mw.html.element('div',{'class':'mw-category'},"")))):(""))));
var element_div=document.createElement('div');
element_div.innerHTML=kategorie;
if(numer_porzadku==0){
var node_firstchild=element_category_generated.firstChild;
if(node_firstchild){
kategorie=$(element_category_generated.firstChild).DodatkiSkryptBefore(element_div.firstChild);
}else{
kategorie=$(element_category_generated).DodatkiSkryptAppend(element_div.firstChild);
}
}else if(numer_porzadku==1){
if(media){
kategorie=$(media).DodatkiSkryptBefore(element_div.firstChild);
}else{
kategorie=$(element_category_generated).DodatkiSkryptAppend(element_div.firstChild);
}
}else{
kategorie=$(element_category_generated).DodatkiSkryptAppend(element_div.firstChild);
}
}
}
$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #'+id+' > p').first().DodatkiSkryptEach(function(i,element){
element.innerHTML=element.innerHTML.replace(/^([^\d]+)(\d+)([^\d]+)(\d+)([^\d]+)$/g,function(a,p1,l1,p2,l2,p3){
return p1+(parseInt(l1)+1)+p2+(parseInt(l2)+1)+p3;
})
})
var nazwa=sortkey+pozycja;
var wezel;
if(numer_porzadku!=2){
var alfabet=(new Array("A","Ą","B","C","Ć","D","E","Ę","F","G","H","I","J","K","L","Ł","M","N","Ń","O","Ó","P","Q","R","S","Ś","T","U","V","W","X","Y","Z","Ź","Ż")).sort().join("");
var pierwsza_litera=nazwa.charAt(0).toUpperCase();
var pozycja_litera=undefined;
var category_group_div=$(element_category_generated).find('> #'+id+' > *:last-child > .mw-category > .mw-category-group');
if(category_group_div.length>0){
var category_group_h3=$(category_group_div).find('> h3');
for(var i=0;i<category_group_h3.length;++i){
var element=category_group_h3[i];
var litera=element.innerHTML;
if(litera==pierwsza_litera){
pozycja_litera=litera;
break;
}
}
}
(function(pierwsza_litera){
for(var p=0;p<=category_group_div.length;++p){
if(p<category_group_div.length){
var h3=$(category_group_div[p]).find('> h3')[0];
var h3_tekst=h3.innerHTML;
for(var i=0;i<alfabet.length;++i){
var litera=alfabet.charAt(i);
var tabs=(new Array(litera,pierwsza_litera)).sort();
if(((!pozycja_litera)&&(litera==tabs[1]))||(pozycja_litera)&&(litera==pierwsza_litera)){
var tabs=(new Array(h3_tekst,pierwsza_litera)).sort();
if((!pozycja_litera)&&(pierwsza_litera==tabs[0])){
var element_wezel=category_group_div[p];
var __wezel=mw.html.element('div',{'class':'mw-category-group',},new mw.html.Raw(mw.html.element('h3',{'class':'is-only-whitespace'},litera)));
wezel=document.createElement('div');
wezel.innerHTML=__wezel;
if(element_wezel){
wezel=$(element_wezel).DodatkiSkryptBefore(wezel.firstChild);
return;
}else{
wezel=$(h3).parent().DodatkiSkryptAppend(wezel.firstChild);
return;
}
}else if((pozycja_litera)&&(h3_tekst==pierwsza_litera)){
wezel=$(category_group_div[p]);
return;
}
}
}
}else{
var pierwsza_litera=nazwa.charAt(0).toUpperCase();
var __wezel=mw.html.element('div',{'class':'mw-category-group',},new mw.html.Raw(mw.html.element('h3',{'class':'is-only-whitespace'},pierwsza_litera)));
wezel=document.createElement('div');
wezel.innerHTML=__wezel;
var category_group_all=$(element_category_generated).find('> #'+id+' > *:last-child > .mw-category').first()[0];
wezel=$(category_group_all).DodatkiSkryptAppend(wezel.firstChild);
return;
}
}
})(pierwsza_litera);
}
/**/;
return WstawPozycjeNaStronieKategoriiWedleDanychStron(DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(DodatkiSkrypt.Info.page.fullname),numer_porzadku,wezel,przestrzen,pozycja,nazwa,false,media,kategorie);
};
}
this.AktualizowanieInformacjiOKategoriiNaStronieKategoriowej=function(item){
var categoryTreebullet=((item==null)?$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories > * > .mw-category > .mw-category-group > ul > li > .CategoryTreeSection > .CategoryTreeItem'))):$(item).siblings('.CategoryTreeChildren').children(".CategoryTreeSection").children(".CategoryTreeItem"));
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var czy_modyfikacje_kategorii=false;
for(var i=0;i<categoryTreebullet.length;++i){
(function(i,categoryTreebullet){
var element=categoryTreebullet[i];
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var element_a0=$(element).find('a').first();
var element_a=$(element).find('a').not('.CategoryTreeToggle').first();
var href=$(element_a).attr('href');
href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href,true);
var href=href.replace(/^\/wiki\//g,"");
return IleJestKategoriiStronIPlikowWKategorii(href,function(ile_kategorii,ile_stron,ile_plikow){
if(ile_kategorii>0){
var str=$(element).siblings('.CategoryTreeChildren');
var display=window.getComputedStyle(str[0], null).getPropertyValue("display");
var str_kategoria=mw.html.element('span',{'class':'CategoryTreeBullet'},
new mw.html.Raw(mw.html.element('a',{'class':'CategoryTreeToggle','data-ct-title':href.replace(/^[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]:/g,"").replace(/[\s_]+/g,"_"),'aria-expanded':((display!="none")?"true":"false"),'title':((display!="none")?'zwiń':"rozwiń")},new mw.html.Raw(""))+" "));
}else{
var str_kategoria=mw.html.element('span',{'class':'CategoryTreeEmptyBullet'},"")
}
var span_full=$(element_a).closest('.CategoryTreeItem').find('span').first();
if((span_full!==null)&&(span_full.length>0)){
var str=$(span_full).parent();
var id=$(str).find('.CategoryTreeToggle');
var data=$(id).data("ct-loaded");
var aktualizacja=$(id).data("ct-aktualizacja");
span_full[0].outerHTML=str_kategoria;
var id=$(str).find('.CategoryTreeToggle');
$(id).data("ct-loaded",data);
$(id).data("ct-aktualizacja",((data)?true:aktualizacja));
}
var dzieci=$(element).children();
if(dzieci.length>2){
var span_ile=dzieci.last();
$(span_ile).attr({'title':"Zawiera "+ile_kategorii+" podkategorie, "+ile_stron+" stron i "+ile_plikow+" plików",'dir':'ltr'});
if(parseInt(ile_kategorii)+parseInt(ile_stron)+parseInt(ile_plikow)>0){
var tab=new Array();
if(ile_kategorii>0){
tab[tab.length]=ile_kategorii+" kat.";
}
if(ile_stron>0){
tab[tab.length]=ile_stron+" str.";
}
if(ile_plikow>0){
tab[tab.length]=ile_plikow+" pl.";
}
span_ile[0].innerHTML="("+tab.join(", ")+")";
}else{
span_ile[0].innerHTML="(pusta)";
}
}
czy_modyfikacje_kategorii=true;
});
},null,muteks));
})(i,categoryTreebullet);
}
return Promise.all(tab_promise).DodatkiSkryptThen(function(){
return Promise.resolve(czy_modyfikacje_kategorii);
});
}
var muteks_dodawania=new DodatkiSkrypt.Muteks();
this.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych=function(item){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var ns_14=$('body.ns-14');
if(ns_14.length>0){
var muteks_zdarzenia=new DodatkiSkrypt.Muteks();
var tab_promise_zdarzenia=new Array();
var czy_modyfikacje_kategorii=undefined;
tab_promise_zdarzenia.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
if(!item){
var fullname=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(DodatkiSkrypt.Info.page.fullname);
}else{
var element_a=$(item).find('a').not('.CategoryTreeToggle').first();
var href=$(element_a).attr('href');
href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href,true);
var fullname=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(href.replace(/^\/wiki\//g,""));
}
var wartosc=DodatkiSkrypt.DodatkiSkryptUserOption.get(fullname,"CzłonkowieKategorii:");
return wartosc.DodatkiSkryptThen(function(data){
if(!data){return;}
var tab_strony=data.split("||");
var muteks=new DodatkiSkrypt.Muteks();
var tab_promise=new Array();
for(var i=0;i<tab_strony.length;++i){
(function(i,tab_strony){
var strona;var sortkey;var numer_porzadku;var przestrzen;var nazwa;
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var strona_sort=tab_strony[i];
var tab_strona_sort=strona_sort.split("|");
strona=tab_strona_sort[0];
sortkey=tab_strona_sort[1]||"";
var promise_przestrzen=DodatkiSkrypt.Scribunto.Nazwy.NAZWAPRZESTRZENI(strona);
var promise_pozycja=DodatkiSkrypt.Scribunto.Nazwy.NAZWASTRONY(strona);
return Promise.all([promise_przestrzen,promise_pozycja]).DodatkiSkryptThen(function(data){
przestrzen=data[0];pozycja=data[1];
if(!item){
return this_zmienna.DodawanieDoStrukturyKategoriiInneStronyZerowegoStopniaRozbudowy(pozycja,przestrzen,sortkey);
}else{
var tab={"Kategoria":0,"Plik":2,};
numer_porzadku=(tab[przestrzen]!=undefined)?tab[przestrzen]:1;
if(numer_porzadku==0){
var wezel=$(item).siblings('.CategoryTreeChildren');
return WstawPozycjeNaStronieKategoriiWedleDanychStron(fullname,0,wezel,przestrzen,pozycja,sortkey+pozycja,true,null,null);
}
}
});
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab={"Kategoria":0,"Plik":2,};
numer_porzadku=(tab[przestrzen]!=undefined)?tab[przestrzen]:1;
if((!item)||(numer_porzadku==0)){
czy_modyfikacje_kategorii=((czy_modyfikacje_kategorii)||(numer_porzadku==0));
return tabela_sortkey_promise[fullname][numer_porzadku].DodatkiSkryptThen(function(tablica_sortkey){
tablica_sortkey[strona]=sortkey;
});
}
},null,muteks));
})(i,tab_strony);
}
return Promise.all(tab_promise);
});
},null,muteks_zdarzenia));
tab_promise_zdarzenia.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return this_zmienna.AktualizowanieInformacjiOKategoriiNaStronieKategoriowej(item).DodatkiSkryptThen(function(data){
czy_modyfikacje_kategorii=data||czy_modyfikacje_kategorii;
});
},null,muteks_zdarzenia));
tab_promise_zdarzenia.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var strfun=$(DodatkiSkrypt.Szereg.IdCSS(3,new Array(' > #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle')));
$(strfun).off('click');
if($(strfun).length>0){DodatkiSkrypt.requireFile('ext.categoryTree')();};
},null,muteks_zdarzenia));
return Promise.all(tab_promise_zdarzenia).DodatkiSkryptThen(function(){
return czy_modyfikacje_kategorii;
});
}
},null,muteks_dodawania);
}
this.UstawZdarzeniaKategoriiNaStronieKategoriowej=function(){
var muteks=new DodatkiSkrypt.Muteks();
var FunkcjaWstawianiaZdarzeniowychElementowychFunkcyjnych=function(){
var id=$(this);
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var item=$(id).parent().parent();
var promise=new Promise(function(resolve,reject){
var Czekaj=function(){
if($(id).data('ct-loaded')){resolve();}else{setTimeout(Czekaj,0);};
}
Czekaj();
});
promise.DodatkiSkryptThen(function(){
if(!$(id).data('ct-aktualizacja')){
$(id).data('ct-aktualizacja',true);
var czas=0;
var categoryTreeChildrenFun=function(resolve,reject){
var notice=$(id).parents('.CategoryTreeItem').siblings('.CategoryTreeChildren').children('.CategoryTreeNotice');
if((notice!==null)&&(notice.length>0)){
var komunikat=notice[0].innerHTML;
if((komunikat=="nic nie znaleziono")||(komunikat=="brak podkategorii")){
resolve("Dobrze");
return;
}
}
var el=$(id).parents('.CategoryTreeItem').siblings('.CategoryTreeChildren').children('.CategoryTreeSection');
if ((el!==null)&&(el.length>0)){resolve("Dobrze");}else{
if(czas>=30000){reject("Dobrze");}else{
setTimeout(function(){categoryTreeChildrenFun(resolve,reject);},300);
czas+=300;
}
}
}
$(document).DodatkiSkryptPromise(categoryTreeChildrenFun).DodatkiSkryptThen(function(){
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle'))).off('click');
return this_zmienna.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych(item).DodatkiSkryptThen(function(data){
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle'))).on('click', FunkcjaWstawianiaZdarzeniowychElementowychFunkcyjnych);
});
});
}
});
},null,muteks);
}
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle'))).on('click', FunkcjaWstawianiaZdarzeniowychElementowychFunkcyjnych);
}
this.StartSubKategoriesStrona=function(muteks_strona){
if(gadget_uruchom_obsluge_kategorie){
var this_zmienna=this;
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.DodatkiSkryptUserOption.set("Kategoria:Szablony z niejawnie błędnymi parametrami","Kategoria:Abłąd|Abłąd2||Kategoria:ZZAbłąd|ZZbłąd2||Kategoria:Szablony - błędy szablonów||Kategoria:Kategorie||Kategoria:Kategorie dla kategorii|Błędy p||Plik:Burza_mozgu.png||Plik:C.pdf|Ag||Plik:Zanurkuj w Pythonie.pdf|Ah","CzłonkowieKategorii:");
DodatkiSkrypt.DodatkiSkryptUserOption.set("Kategoria:Szablon kategoria - nieistniejąca kategoria","Wikipedysta:Persino/brudnopis1||Wikipedysta:Persino/brudnopis||Kategoria:Szablony - błędy szablonów||Kategoria:Kategorie||Plik:Burza_mozgu.png||Plik:C.pdf|Ag||Plik:Zanurkuj w Pythonie.pdf|Ah","CzłonkowieKategorii:");
//var this=new KategorieSubst.KategorieSubst();
var muteks_kategorie=new DodatkiSkrypt.Muteks();
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return this_zmienna.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych().DodatkiSkryptThen(function(){
var tab_promise=new Array();
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeSection > .CategoryTreeItem'))).DodatkiSkryptEach(function(i,element){
tab_promise.push(this_zmienna.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych(element,true));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_kategorie);
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return this_zmienna.UstawZdarzeniaKategoriiNaStronieKategoriowej();
},null,muteks_kategorie);
},null,muteks_strona);
}
}
}
/*StronicowyParser.LinkiKategorii*/
var promise=new Promise(function(resolve,reject){
var Czekaj=function(){
if(window.DodatkiSkrypt){
resolve(window.DodatkiSkrypt);
}else{
setTimeout(Czekaj,0);
}
}
Czekaj();
});
promise.then(function(DodatkiSkrypt){
var DodatkiStrona=new Array();
DodatkiStrona.NumerSubst=NumerSubst;
DodatkiStrona.DymkiSubst=DymkiSubst;
DodatkiStrona.SzablonSubst=SzablonSubst;
DodatkiStrona.StronaSubst=StronaSubst;
DodatkiStrona.KategorieSubst=KategorieSubst;
window.DodatkiStrona=DodatkiStrona;
});
})(mediaWiki,jQuery);
ajhse0ah8pj51mpphvfyzmemhp6e7tp
542681
542680
2026-05-12T05:26:11Z
Persino
2851
542681
javascript
text/javascript
(function(mw,$){
var NumerSubst=new Array();
var DymkiSubst=new Array();
var SzablonSubst=new Array();
var StronaSubst=new Array();
var KategorieSubst=new Array();
/**/
var czy_nie_gconfig_numersubst=false;
var czy_nie_gconfig_dymkisubst=false;
var czy_nie_gconfig_szablonsubst=false;
var czy_nie_gconfig_stronasubst=false;
var czy_nie_gconfig_kategoriesubst=false;
/**/
NumerSubst.NumerowanieNaglowkow=function(){
/**/
var gadget_numerowanie_nie_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_normalne_nie_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej=undefined;
/**/
var gadget_numerowanie_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_normalne_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej=undefined;
/**/
var gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var gadget_numerowanie_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_numersubst){
czy_nie_gconfig_numersubst=true;
mw.messages.set({
'NumerSubst-name': 'Numerowanie nagłówków',
'NumerSubst-description-page': 'Wikibooks:StronicowyParser',
'NumerSubst-numerowanie_nie_na_stronie_zbiorczej': 'Włącz numerowanie nagłówków nie na stronie zbiorczej.',
'NumerSubst-numerowanie_normalne_nie_na_stronie_zbiorczej': "Włącz numerowanie, bez prefiksów, nagłówków nie na stronie zbiorczej.",
'NumerSubst-numerowanie_asynchroniczne_nie_na_stronie_zbiorczej': "Sprawdza, czy na stronie niezbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'NumerSubst-numerowanie_na_stronie_zbiorczej': 'Włącz numerowanie nagłówków na stronie zbiorczej.',
'NumerSubst-numerowanie_normalne_na_stronie_zbiorczej': "Włącz numerowanie, bez prefiksów, nagłówków na stronie zbiorczej.",
'NumerSubst-numerowanie_asynchroniczne_na_stronie_zbiorczej': "Sprawdza, czy na stronie zbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'NumerSubst-numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'NumerSubst-numerowanie_zapisz_dane_na_kliencie':'Zapisuje dane, co do numerowania rozdziałów i artykułówna kliencie',
});
gConfig.register('NumerSubst', {name: mw.msg('NumerSubst-name'), descriptionPage: mw.msg('NumerSubst-description-page')}, [
{
name: 'numerowanie_nie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_nie_na_stronie_zbiorczej']
},
{
name: 'numerowanie_normalne_nie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_normalne_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_NumerSubst-numerowanie_normalne_nie_na_stronie_zbiorczej']
},
{
name: 'numerowanie_asynchroniczne_nie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_asynchroniczne_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_asynchroniczne_nie_na_stronie_zbiorczej']
},
{
name: 'numerowanie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_na_stronie_zbiorczej']
},
{
name: 'numerowanie-normalne_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_normalne_na_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_NumerSubst-numerowanie_normalne_na_stronie_zbiorczej']
},
{
name: 'numerowanie_asynchroniczne_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_asynchroniczne_na_stronie_zbiorczej'),
type: 'boolean',
deflt:true,
legacy: [window, 'wb_NumerSubst-numerowanie_asynchroniczne_na_stronie_zbiorczej']
},
{
name: 'numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'numerowanie_zapisz_dane_na_kliencie',
desc: mw.msg('NumerSubst-numerowanie_zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_NumerSubst-numerowanie_zapisz_dane_na_kliencie']
},
]);
}
gadget_numerowanie_nie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_nie_na_stronie_zbiorczej')==true);
gadget_numerowanie_normalne_nie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_normalne_nie_na_stronie_zbiorczej')==true);
gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_asynchroniczne_nie_na_stronie_zbiorczej')==true);
/**/
gadget_numerowanie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_na_stronie_zbiorczej')==true);
gadget_numerowanie_normalne_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_normalne_na_stronie_zbiorczej')==true);
gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_asynchroniczne_na_stronie_zbiorczej')==true);
/**/
gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(gConfig.get('NumerSubst','numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
gadget_numerowanie_zapisz_dane_na_kliencie=(gConfig.get('NumerSubst','numerowanie_zapisz_dane_na_kliencie')==true);
}
gadget_numerowanie_nie_na_stronie_zbiorczej=(gadget_numerowanie_nie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_nie_na_stronie_zbiorczej:true;
gadget_numerowanie_normalne_nie_na_stronie_zbiorczej=(gadget_numerowanie_normalne_nie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_normalne_nie_na_stronie_zbiorczej:false;
gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej=(gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej:true;
/**/
gadget_numerowanie_na_stronie_zbiorczej=(gadget_numerowanie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_na_stronie_zbiorczej:true;
gadget_numerowanie_normalne_na_stronie_zbiorczej=(gadget_numerowanie_normalne_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_normalne_na_stronie_zbiorczej:false;
gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej=(gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej:true;
/**/
gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!==undefined)?gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true;
gadget_numerowanie_zapisz_dane_na_kliencie=(gadget_numerowanie_zapisz_dane_na_kliencie!==undefined)?gadget_numerowanie_zapisz_dane_na_kliencie:false;
/**/
var this_zmienna=this;
/**/
/**/
this.UstalanieZmiennychNumerowanieNapisoweWprowadzeniaTekstu=function(aktualna_strona,element){
var funkcja=function(){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
if(wikikod){
var gadget_numerowanie=gadget_numerowanie_na_stronie_zbiorczej;
var gadget_numerowanie_normalne=gadget_numerowanie_normalne_na_stronie_zbiorczej;
var gadget_numerowanie_asynchroniczne=gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej;
}else{
var gadget_numerowanie=gadget_numerowanie_nie_na_stronie_zbiorczej;
var gadget_numerowanie_normalne=gadget_numerowanie_normalne_nie_na_stronie_zbiorczej;
var gadget_numerowanie_asynchroniczne=gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej;
}
return Promise.resolve([gadget_numerowanie,gadget_numerowanie_normalne,gadget_numerowanie_asynchroniczne]);
});
};
if(gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
return Promise.resolve([false,false,false]);
}
});
}else{
return funkcja();
}
}
var promise_numerowanie=this.UstalanieZmiennychNumerowanieNapisoweWprowadzeniaTekstu();
var tab_promise_numerowanie=new Array();
tab_promise_numerowanie.push(promise_numerowanie);
var this_zmienna=this;
//gadget_numerowanie=((gadget_numerowanie!==undefined)?gadget_numerowanie:true);
var UstalanieZmiennychNumerowanie=function(aktualna_strona,element,funkcja){
var gadget_numerowanie;var gadget_numerowanie_normalne;var gadget_numerowanie_asynchroniczne;
return promise_numerowanie.DodatkiSkryptThen(function(data){
gadget_numerowanie=data[0];gadget_numerowanie_normalne=data[1];gadget_numerowanie_asynchroniczne=data[2];
if(gadget_numerowanie_asynchroniczne){
if(aktualna_strona){
tab_promise_numerowanie.push(this_zmienna.UstalanieZmiennychNumerowanieNapisoweWprowadzeniaTekstu(aktualna_strona,element));
promise_numerowanie=tab_promise_numerowanie.at(-1);
return promise_numerowanie;
}
}
return data;
}).DodatkiSkryptThen(function(data){
return funkcja(data,aktualna_strona,element);
}).DodatkiSkryptFinally(function(data){
if(gadget_numerowanie_asynchroniczne){
if(aktualna_strona){
tab_promise_numerowanie.pop();
promise_numerowanie=tab_promise_numerowanie.at(-1);
}
}
return data;
});
}
/**/
this.NumerowanieNaglowkowStronZObiektami=function(id_numerowanie,prefix){
var fun_hnumer=DodatkiSkrypt.Szereg.HNumer.LiczonyHNumer();
var numeracja=new Array();
var czy_numerowac=false;
var p=false;
var stare_fun_hnumer;
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
$(id_numerowanie).find(hn).not(toc_h).DodatkiSkryptEach(function(i,h_element){
/**/
var div_element=$(h_element).closest('.mw-heading');
var element=($(div_element).length>0)?$(div_element):$(h_element);
var szablon_spec=$(element).parents('.strona_start').first();
var szablon_spec_w_drzewie=$(id_numerowanie).find(szablon_spec);
if((szablon_spec.length>0)&&(szablon_spec_w_drzewie.length>0)){return;}
/**/
var CzyTak=function(klasa1,not_klasa2){
var str_elements=$(element).parents(klasa1);
if(not_klasa2){
str_elements=$(str_elements).not(not_klasa2);
}
if(($(str_elements).length>0)
&&(($(str_elements).filter(id_numerowanie).length==0)
&&($(str_elements).find(id_numerowanie).length==0)
)
){return true;}
return false;
}
var tak=CzyTak('.rodzic_szablon_subst_js');if(tak){return;};
var tak=CzyTak('.artykułsubst');if(tak){return;};
var tak=CzyTak('.klasa_książki');if(tak){return;};
var tak=CzyTak('.rozdział_książki','.klasa_książki > .klasa_nagłówka > .rozdział_książki');if(tak){return;};
/**/
var szablon=$(element).find('.mw-numbering-main-page, .numeracja');
if(szablon.length>0){return;};
czy_numerowac=true;
var hn_element=$(h_element).not(toc_h).first().get(0);
var poziom_naglowka=DodatkiSkrypt.Szereg.HNumer.PoziomNapisuWprowadzeniaTekstu(hn_element);
var numer=fun_hnumer(poziom_naglowka);
var czy_ponumerowany=$(element).children('.numeracja');
if(numeracja.length<numer){numeracja.push(1);}
else if(numeracja.length>numer){numeracja=numeracja.slice(0,numer);numeracja[numer-1]+=parseInt(1);}
else if(numeracja.length==numer){numeracja[numer-1]+=parseInt(1);};
if(czy_ponumerowany.length==0){
var span=document.createElement('span');
span.setAttribute('class',"numeracja");
$(span).html(((prefix!=="")?(prefix+"."):"")+numeracja.join('.')+". ");
var child=$(element).contents().first();
if($(child).length>0){
$(child).before(span);
}else{
$(element).append(span);
}
}else{
$(czy_ponumerowany).first().html(((prefix!=="")?(prefix+"."):"")+numeracja.join('.')+". ");
}
});
return czy_numerowac;
}
this.NumerowanieNaglowkowStron=function(id_numerowanie,prefix,czy_bez_prefix){
return promise_numerowanie.DodatkiSkryptThen(function(data){
var gadget_numerowanie=data[0];var gadget_numerowanie_normalne=data[1];var gadget_numerowanie_asynchroniczne=data[2];
if(!gadget_numerowanie){return;}
if(!czy_bez_prefix){prefix="";};
var tab_promise=new Array();
var czy_numerowac=this_zmienna.NumerowanieNaglowkowStronZObiektami(id_numerowanie,prefix);
var strona_start=$(id_numerowanie).find('.strona_start');
if(strona_start.length>0){
for(var i=0;i<strona_start.length;++i){
var artykulsubst=$(strona_start[i]).find(".artykułsubst");
var obiekt;
if(artykulsubst.length>0){
obiekt=$(artykulsubst).find('.zawartość')[0];
}else{
obiekt=$(strona_start[i]).find('.ciało_strona')[0];
}
if(obiekt){
var prefix2=((strona_start.length==1)?((!czy_numerowac)?prefix:""):"");
if(prefix2!=""){
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,prefix2,czy_bez_prefix);
tab_promise.push(promise);
}else if(artykulsubst.length>0){
var str_adres=$(artykulsubst).find('.adres');
if((str_adres.length>0)&&(obiekt!=null)){
if(!gadget_numerowanie_normalne){
var adres=$(str_adres[0]).html().trim();
var artykul=DodatkiSkrypt.Nazwy.ARTICLENAME(adres);
var aktualna_strona=DodatkiSkrypt.Nazwy.FULLPAGENAME(adres);
var promise=UstalanieZmiennychNumerowanie(aktualna_strona,id_numerowanie,function(data_promise_numerowanie,aktualna_strona,id_numerowanie){
return this_zmienna.PreparujStronyJednostek(obiekt,artykul,aktualna_strona,true).DodatkiSkryptThen(function(){
return this_zmienna.NumerowanieNaglowkowStron(obiekt,"");
});
});
tab_promise.push(promise);
}else{
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,"",czy_bez_prefix);
tab_promise.push(promise);
}
}else{
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,"",czy_bez_prefix);
tab_promise.push(promise);
}
}else{
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,"",czy_bez_prefix);
tab_promise.push(promise);
}
}
}
}
return Promise.DodatkiSkryptAll(tab_promise);
});
}
this.FunkcjaZdarzenStronyGlownejPodrecznika=function(){
}
this.NumerowanieStronGłównychPodręcznikowWedlugZebranychDanych=function(id_numerowanie,json,aktualna_strona){
var JSONDane=function(json,numer_porzadkowy){
for(var rozdzial in json){
var tab_rozdzial=json[rozdzial];
for(var numer_rozdzialu in tab_rozdzial){
var tab_numer_rozdzial=tab_rozdzial[numer_rozdzialu];
for(var artykul in tab_numer_rozdzial){
var tab_artykul=tab_numer_rozdzial[artykul];
for(var numer_artykulu in tab_artykul){
var tab_numer_artykulu=tab_artykul[numer_artykulu];
for(var i in tab_numer_artykulu){
var tab_i=tab_numer_artykulu[i];
if(tab_i["numer"]==numer_porzadkowy){
var czy_podreczniku=tab_i["czy w podręczniku"];
var czy_url=!!(tab_i["url"]);
var zebrane_dane={
"rozdział":DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(/*DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(*/rozdzial/*)*/))),
"numer rozdziału":numer_rozdzialu,
"artykuł":(((!czy_podreczniku)&&(!czy_url))?(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(artykul))))):(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(artykul))))),
"numer artykułu":numer_artykulu,
"link":((tab_i["link"])?(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["link"])))):undefined),
"przekierowanie":((tab_i["przekierowanie"]!==undefined)?
((!czy_podreczniku)?(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["przekierowanie"]))))):(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["przekierowanie"]))))):undefined),
"pełna nazwa książki":((tab_i["pełna nazwa książki"]!=undefined)?
(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["pełna nazwa książki"]))))):undefined),
"kod języka":tab_i["kod języka"],
"kod projektu":tab_i["kod projektu"],
"nazwa":((tab_i["nazwa"]!==undefined)?(DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(tab_i["nazwa"]))))):undefined),
"spis treści":tab_i["spis treści"],
"dodane":tab_i["dodane"],
"czy w podręczniku":czy_podreczniku,
"inna książka":tab_i["inna książka"],
"url":czy_url,
};
return zebrane_dane;
}
}
}
}
}
}
return null;
}
/**/
var przestrzenie_alternatywne={
"w":"wikipedia",
"b":"wikibooks",
"wikt":"wiktionary",
"q":"wikiquote",
"s":"wikisource",
"voy":"wikivoyage",
"n":"wikinews",
"v":"wikiversity",
};
var PrzestrzenStrony=function(klucz,tabela, czy_klucz){
klucz=klucz.toLowerCase();
var projekt=tabela[klucz];
if(projekt){return czy_klucz?klucz:projekt;}
for(p in tabela){
var projekt=tabela[p];
if(projekt){
var projekt_data=(typeof(projekt)=="object")?projekt[0]:projekt;
projekt_data=projekt_data.toLowerCase();
if(projekt_data==klucz){
return czy_klucz?p:projekt;
}
}
}
return undefined;
}
var przestrzenie_poza={
"foundation":"wikimedia",
"commons":"wikimedia",
"species":"wikimedia",
"meta":"wikimedia",
"mw":["mediawiki","www",],
"d":["wikidata","www",],
"f":["wikifunctions","www",],
};
/**/
var LiczbaElementowaTablicowaJson=function(){
for(var numer_porzadkowy=1;;++numer_porzadkowy){
var element_json=JSONDane(json,numer_porzadkowy);
if(element_json===null){
return Math.max(numer_porzadkowy-1,0);
}
}
return 0;
}
var FunctionNumeracja=function(p){
var i_begin=0;
var max_i_begin=1;
var j=1;
var f=0;
var k=-1;
var dane;var yes=true;
var CzyPomijanieElementoweSpisuRzeczy=function(element,pierwsze_dziecko,j,tekst){
//console.log("BADANIE ELEMENTU:",element,element.outerHTML,tekst)
var tak=(
(j>1)
&&($(element).parents('div.center, div.mw-heading').find('.mw-numbering-main-page').length==0)
&&($(element).closest('.ambox, .tmbox, .fmbox, .ombox, .dmbox, .npm, .wm').length==0)
&&(!/^\s*$/g.test($(element).text()))
&&($(element).not('a').length==0)
&&(!/^\s*\-\s*/g.test($(element).closest('td,th').text()))
&&($(element).closest('.noprint').length==0)
&&(($(element).closest("p").length==0)||(/^[^\n]*:[^\S\n]*$/g.test(tekst)))
&&(!pierwsze_dziecko)
&&(!DodatkiSkrypt.Szereg.Html.Float(element))
&&($(element).filter('.mw-file-description').length==0)
&&($(element).closest("[typeof=\"mw:File\"]").length==0)
&&($(element).closest('.reference').length==0)
&&($(element).closest('.toc_artykuł').length==0)
&&($(element).filter("a.mw-selflink.selflink").length==0)
&&(!(
($(element).filter("a:not(.mw-selflink):not(.selflink)").length>0)
&&(
(/^([Oo]k[łl]adka|[Ww]ersja_do_druku|[Ww]ersja_do_czytania)$/g.test(tekst))
)
))
)
console.log("BADANIE ELEMENTU:",element,element.outerHTML,tekst,tak);
return tak;
}
var RozdzialBezNumeracji=function(tekst){
var czy=/^[\d\.]+\s+/g.test(tekst)||/^[\d\.]+\s*$/g.test(tekst);
if(czy){
var num=tekst.match(/^([\d\.]+)/g).toString();
var tab=num.split(".");
if(tab.length==1){
if(/^\d+$/g.test(num)){
return tekst;
}
}else{
console.log(tab,tekst,"_____________________________________")
if(tab[tab.length-1]==""){tab.splice(tab.length-1,1);};
}
var tak=true;
for(var i=0;i<tab.length;++i){
tak=tak&&(/^\d+$/g.test(tab[i]));
if(!tak){break;};
}
if(tak){
tekst=tekst.replace(/^[\d\.]+\s*/g,"");
}
}
return tekst;
}
var OperacjeNaTestowychElementach=function(element){
var iterator=DodatkiSkrypt.Szereg.Html.IteratorPotomkowyPoElemencieHtml(element)
var __element;
do{
__element=iterator();
console.log(__element,"TYTAN0123")
if(__element){
if(!__element.tagName){
if($(__element).closest(".mw-numbering-main-page").length>0){continue;}
var text=__element.nodeValue;
text=RozdzialBezNumeracji(text);
console.log(text,"TYTAn0000000",__element.nodeValue)
text=text.replace(/^\d+\s+/g,"");
text=text.replace(/^\s*[IVXL]+\s+/g,"");
text=text.replace(/\s*\([0-9a-zA-Z]+\)\s+/g,"")
__element.nodeValue=text;
break;
}
}
}while(__element);
}
var roznica_spis_tresci=0;
var Numerowanie=function(element,tag,tekst,pierwsze_dziecko,nazwa,czy_edit){
dane=((yes)||(!dane))?JSONDane(json,j):dane;
if(dane===null){return;}
var Numer=function(dane){
var numer_rozdzialu=dane["numer rozdziału"];
var numer_artykulu=dane["numer artykułu"];
var numer=((numer_rozdzialu!="")&&(numer_artykulu!=""))?(numer_rozdzialu+"."+numer_artykulu):((numer_rozdzialu)?numer_rozdzialu:numer_artykulu);
if(numer==""){return null;}
numer="("+numer+") ";
return numer;
}
if(dane["dodane"]){
yes=true;
++j;
dane=((yes)||(!dane))?JSONDane(json,j):dane;
if(dane==null){return;}
}
var spis_tresci;var rozdzial;var artykul;var przekierowanie;var numer_rozdzialu;var numer_artykulu;
var fun_pozycja=function(){
spis_tresci=dane["spis treści"];
rozdzial=dane["rozdział"];
artykul=dane["artykuł"];
przekierowanie=dane["przekierowanie"];
numer_rozdzialu=dane["numer rozdziału"];
numer_artykulu=dane["numer artykułu"];
}
fun_pozycja();
mw.log(rozdzial,"TYTAn123")
if((spis_tresci===undefined)&&(rozdzial=="Spis treści")&&(numer_rozdzialu=="")&&(artykul=="")&&(numer_artykulu=="")){
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
}
console.log(rozdzial,spis_tresci,numer_rozdzialu,artykul,numer_artykulu,"TYTAn1231");
if((spis_tresci==undefined)&&(rozdzial=="Główny spis treści")&&(numer_rozdzialu=="")&&(artykul=="")&&(numer_artykulu=="")){
console.log("TYTAn1232")
roznica_spis_tresci+=0;
console.log("TYTAN1233")
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
}else{
var spis_fullname=DodatkiSkrypt.Nazwy.ARTICLENAME(DodatkiSkrypt.Info.page.fullname);
var rozdzial_temp="Spis treści - "+spis_fullname;
spis_fullname=spis_fullname.replace(/[\s_]/g,"_");
console.log(rozdzial,rozdzial_temp,numer_rozdzialu,artykul,numer_artykulu,DodatkiSkrypt.Info.page.fullname,"TYTAN76979")
if((rozdzial==rozdzial_temp)&&(numer_rozdzialu!="")&&(artykul=="")&&(numer_artykulu=="")){
console.log("TYTAN1234")
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
console.log(rozdzial,rozdzial_temp,numer_rozdzialu,artykul,numer_artykulu,spis_fullname,DodatkiSkrypt.Info.page.fullname,"TYTANbbbbb")
if((rozdzial==rozdzial_temp)&&(numer_rozdzialu!="")&&(artykul==spis_fullname)&&(numer_artykulu=="")){
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
}
}
}
var NumerujLinki=function(dane,czy_a,tag){
var numer=Numer(dane);
if(!numer){return;};
var tak=false;
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var h_element=$(element).closest(hn).not(toc_h);
var element_heading=$(h_element).closest('div.mw-heading');
var hn_element=(($(element_heading).length>0)?$(element_heading):$(h_element));
var element_naglowek=(($(hn_element).length>0)?$(hn_element):($(element).closest('div.center')));
$(element_naglowek).DodatkiSkryptEach(function(i,element){
$(element).find('> .mw-numbering-main-page, > .link > .mw-numbering-main-page').DodatkiSkryptEach(function(i,element){
if($(element).html()==numer){tak=true;}
});
});
$($(element).parent()).filter('div.template-center').find(' > div').DodatkiSkryptEach(function(i,element){
$(element).find('> .mw-numbering-main-page, > .link > .mw-numbering-main-page').DodatkiSkryptEach(function(i,element){
if($(element).html()==numer){tak=true;}
});
});
if(tak){return;};
var span=document.createElement('span');
$(span).addClass('mw-numbering-main-page');
$(span).html(numer);
/*if((tag)||(tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6")){
element2=$(element).parent();
if(element2.length>0){element=element2[0];};
}*/
if(!czy_a){
$(element).before(span);
}else{
var if_dziecko=(pierwsze_dziecko)?pierwsze_dziecko:element.firstChild;
if(if_dziecko){
$(if_dziecko).before(span);
}else{
$(element).append(span);
}
}
$(element).closest('li').parents("ul, ol").filter(".mw-parser-output ul, .mw-parser-output ol").DodatkiSkryptEach(function(i,element){
$(element).addClass('css_numersubst');
});
}
if(tag=="A"){
tekst=DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tekst)));
var czy_poza=(!dane["czy w podręczniku"]);
var kod_jezyka=dane["kod języka"];var kod_projektu=dane["kod projektu"];
var link=dane["link"];
var czy_url=dane["url"];
//var link2=link?link.replace(new RegExp("^[:%s_]*"+kod_jezyka+"[%s_:]*:"),"").replace(new RegExp("^[:%s_]*"+kod_projektu+"[%s_:]*:"),""):link;
//link2=link2?link2.replace(new RegExp("^[:%s_]*"+kod_projektu+"[%s_:]*:"),"").replace(new RegExp("^[:%s_]*"+kod_jezyka+"[%s_:]*:"),""):link2;
console.log("TYTAN0",przekierowanie);
if(((artykul!="")&&(numer_artykulu!=""))&&(spis_tresci==undefined)&(czy_poza)&&(((kod_jezyka!=null)&&(kod_jezyka!=""))||((kod_projektu!=null)&&(kod_projektu!=""))||czy_url)&&(link)&&(!((kod_jezyka=="pl")&&(kod_projektu=="b")&&(/^([\s_]*:[\s_]*(?i:pl)){1,}[\s_]*:[\s_]*(?!(?i:b)[\s_]*:)/g.test(link))))/*&&(((kod_projektu=="url")&&(artykul==link))||(link2==(przekierowanie||artykul)))*/){
console.log(czy_url,tekst,"TYTAN123");
if(!czy_url){
var nazwa=dane["nazwa"];
link=link.replace(/^\s*:/g,"");
var klucz=link.match(/^([^:]*):/);
if(klucz==null){
klucz=((kod_jezyka=="pl")?kod_projektu:((kod_projektu=="b")?kod_jezyka:kod_projektu));
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
if(kod_jezyka=="pl"){
link=((kod_projektu!=klucz)?(kod_projektu+":"):"")+link;
}else if(kod_projektu=="b"){
link=klucz_jezyka+":"+link;
}
var artykul_z_kodami=DodatkiSkrypt.Szereg.Styl.PoprawMianoNazwyStrony(link);
}else{
console.log(klucz,"TYTAn")
klucz=klucz[1];
klucz=klucz.toLowerCase();
if(klucz=="pl"){
do{
link=link.replace(/^([^:]*):/,"");
klucz=link.match(/^([^:]*):/);
if(klucz){
klucz=klucz[1];
klucz=klucz.toLowerCase();
}
}while(klucz=="pl");
}
if(link!=(przekierowanie||artykul)){
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
var artykul_z_kodami=link.replace(/^([^:]*:)(.*)$/g,function(s,a,b){
return DodatkiSkrypt.Szereg.Styl.PoprawMianoNazwyStrony(b);
});
}else{
klucz=kod_jezyka;
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
link=kod_projektu+":"+link;
var artykul_z_kodami=DodatkiSkrypt.Szereg.Styl.PoprawMianoNazwyStrony(link);
}
}
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
var href;
if(projekt){
var czy_prze=przestrzenie_alternatywne[klucz];
href="//"+((klucz!="b")?(czy_prze?"pl":'en'):"en")+"."+projekt+".org/wiki/"+artykul_z_kodami;
}else{
kod_projektu=link.match(/^[\s_]*(?::[\s_]*)?[^\s:]+[\s_]*:[\s_]*([^\s:]+)[\s_]*:/)[1];
var Href=function(klucz,artykul_z_kodami){
var klucz_tabela=PrzestrzenStrony(klucz,przestrzenie_poza);
var przed_poza;
if(klucz_tabela){
if(typeof(klucz_tabela)=="object"){
klucz_poza=klucz_tabela[0];
przed_poza=klucz_tabela[1];
}else{
klucz_poza=klucz_tabela;
}
}
klucz=PrzestrzenStrony(klucz,przestrzenie_poza,true)||klucz;
if(!przestrzenie_poza[klucz]){
href="//"+((klucz!="b")?klucz:"en")+".wikibooks.org/wiki/"+artykul_z_kodami;
}else{
href="//"+(przed_poza||klucz)+"."+klucz_poza+".org/wiki/"+artykul_z_kodami;
}
return href;
}
if((!kod_projektu)||((klucz!="pl")&&(PrzestrzenStrony(kod_projektu,przestrzenie_alternatywne)))){
href=Href(klucz,artykul_z_kodami);
}else{
var projekt=PrzestrzenStrony(kod_projektu,przestrzenie_alternatywne);
if((klucz=="pl")&&(projekt)){
artykul_z_kodami=artykul_z_kodami.replace(/^[\s_]*(?::[\s_]*)?[^\s:]+[\s_]*:/g,"");
href="//"+((kod_projektu!="b")?klucz:"en")+"."+projekt+".org/wiki/"+artykul_z_kodami;
console.log(href,klucz,projekt,"MAMUT123");
}else{
href=Href(klucz,artykul_z_kodami);
}
}
}
if(href==tekst.replace(/^https?:/gi,"")){
NumerujLinki(dane,false,tag);
yes=true;
++j;
}else{
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
console.log(element.outerHTML,tekst,"ABC1",f);
++f;
}
if(j<=max_i_begin){++i_begin;console.log(tekst,"A",i_begin);};
};
}else{
if(link.replace(/^https?:\/\//gi,"")==tekst.replace(/^https?:\/\//gi,"")){
NumerujLinki(dane,false,tag);
yes=true;
++j;
}else{
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
console.log(element.outerHTML,tekst,"ABC2",f);
f++;
}
if(j<=max_i_begin){++i_begin;console.log(tekst,"B",i_begin);};
}
}
//});
}else{
var pelna_nazwa_ksiazki=dane["pełna nazwa książki"];
var nazwa_artykulu=dane["nazwa"];
var inna_ksiazka=dane["inna książka"];
/**/
var artykul_edit;var przekierowanie_edit;
if(czy_edit){
artykul_edit=artykul.replace(/^([^#]*)#(.*)$/g,"$1");
artykul_edit=artykul_edit.replace(/^(.*)\?\s*\a+[\a\s]*=.*$/g,"$1");
if(przekierowanie){
przekierowanie_edit=przekierowanie.replace(/^([^#]*)#(.*)$/g,"$1");
przekierowanie_edit=przekierowanie_edit.replace(/^(.*)\?\s*\a+[\a\s]*=.*$/g,"$1");
}
}
/**/
var nazwa=DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(nazwa))));
tekst=((czy_poza)?(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(tekst)):tekst);
console.log("TYTAN1",spis_tresci,artykul,numer_artykulu,czy_edit,tekst,nazwa_artykulu,pelna_nazwa_ksiazki,czy_poza)
if(/^\/\/upload\.wikimedia\.org\/[^\/]+\/[^\/]+\/2\/2a\//g.test(tekst)){
tekst=(tekst.match(/^\/\/upload\.wikimedia\.org\/[^\/]+\/[^\/]+\/2\/2a\/(.*)$/)[1].toString())||tekst;
tekst="Media:"+tekst;
}else if(/^\/\/commons\.wikimedia\.org\/wiki\/Special\:UploadWizard\?uselang\=pl\&wpDestFile\=/g.test(tekst)){
tekst=(tekst.match(/^\/\/commons\.wikimedia\.org\/wiki\/Special\:UploadWizard\?uselang\=pl\&wpDestFile\=(.*)$/)[1].toString())||tekst;
tekst="Media:"+tekst;
}
console.log(spis_tresci,artykul,numer_artykulu,inna_ksiazka,czy_edit,czy_poza,tekst,"PPPPPPPPPPPPP123",nazwa,nazwa_artykulu,nazwa==nazwa_artykulu)
if((spis_tresci==undefined)&&((artykul!="")||(numer_artykulu!=""))
&&(
((!inna_ksiazka)&&((!pelna_nazwa_ksiazki)||(!czy_poza)))
?((((!czy_edit)?(pelna_nazwa_ksiazki?artykul:przekierowanie):(pelna_nazwa_ksiazki?artykul_edit:przekierowanie_edit))||przekierowanie||artykul)==tekst)
:(
(
(pelna_nazwa_ksiazki?(pelna_nazwa_ksiazki+"/"):"")
+(((!czy_edit)?(inna_ksiazka?przekierowanie:artykul):(inna_ksiazka?przekierowanie_edit:artykul_edit))||przekierowanie||artykul)
)==tekst
)
)&&((!nazwa_artykulu)||(nazwa==nazwa_artykulu))
){
console.log("TYTAN2");
NumerujLinki(dane,false,tag);
/**/
$(element).parents('dd, li, span:not(.link), b, i, p').first().DodatkiSkryptEach(function(i,element){
OperacjeNaTestowychElementach(element);
});
/**/
$(element).parents('div.toc_ogólnie_spis.toc_artykuł').find('a > span.tocnumber').DodatkiSkryptEach(function(i,element){
var numer_toc=$(element).html();
var numer=numer_rozdzialu+(((numer_rozdzialu!="")&&(numer_artykulu!=""))?("."+numer_artykulu):numer_artykulu);
numer=numer+(((numer!="")&&(numer_toc!=""))?("."+numer_toc):numer_toc);
$(element).html(numer);
});
yes=true;
++j;
}else{
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
++f;
}
if(j<=max_i_begin){++i_begin;};
}
}
}else{
tekst=DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(tekst)));
//rozdzial=DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(rozdzial);
tekst=RozdzialBezNumeracji(tekst);
tekst=DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(tekst);
var spis_tresci_temp=spis_tresci-roznica_spis_tresci;
console.log(rozdzial,tekst,spis_tresci,numer_artykulu,tag,"TYTAN111111111111");
if((rozdzial==tekst)&&((artykul=="")&&(numer_artykulu==""))&&(tag)&&(spis_tresci!=undefined)&&(((spis_tresci_temp>0)&&((((tag=="DIV")&&(($(element).hasClass('mw-heading'))||($(element).parent().hasClass('template-center'))||($(element).hasClass('center'))))/*||($(element).parents('.center,center').length>0)*/||(tag=="CENTER"))||((tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6"))))||((spis_tresci<0)&&(/*($(element).parents('li, dd').length>0)||*/(tag=="DD")||(tag=="LI")||(tag=="DT")))||((spis_tresci==0)&&(/*($(element).parents('p,i,b').length>0)||*/(tag=="P")||(tag=="I")||(tag=="B")||(tag=="CENTER")||(tag=="TD")||(tag=="TH")||(tag=="CAPTION"))))){
NumerujLinki(dane,true,tag);
console.log(element,tekst,"GGG1")
$(element).DodatkiSkryptEach(function(i,element){
OperacjeNaTestowychElementach(element);
});
yes=true;
++j;
}else{
yes=false;
var warunek=((tag)&&((((((tag=="DIV")&&(($(element).hasClass('mw-heading'))||($(element).parent().hasClass('template-center'))||($(element).hasClass('center'))))/*||($(element).parents('.center,center').length>0)*/||(tag=="CENTER"))||((tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6"))))||((spis_tresci<0)&&(/*($(element).parents('li, dd').length>0)||*/(tag=="DD")||(tag=="LI")||(tag=="DT")))||((/*($(element).parents('p,i,b').length>0)||*/(tag=="P")||(tag=="I")||(tag=="B")||(tag=="CENTER")||(tag=="TD")||(tag=="TH")||(tag=="CAPTION")))));
if(warunek){
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
console.log(element.outerHTML,tekst,"ABC4",f,j,tag,element,rozdzial);
++f;
}
}
if((tag)&&((tag!="P")||((tag=="P")&&(!pierwsze_dziecko)))&&(j<=max_i_begin)){++i_begin;console.log(tekst,tag,"F",i_begin)};
}
}
}
var FunkcjaZnacznikaP=function(element,czy_tag){
var str_p=$(element).parents("P").first();
if(str_p.length>0){
var klon=document.createElement('div');
var czy_w_nim_a=false;
var pierwsze_dziecko=undefined;
for (const element_dzieci of str_p[0].childNodes){
var nowy_tag=(element_dzieci.tagName)?(element_dzieci.tagName.toUpperCase()):null;
if(nowy_tag!=="BR"){
if(!pierwsze_dziecko){
pierwsze_dziecko=element_dzieci;
}
if((element_dzieci==element)||($(element_dzieci).find(element).length>0)){czy_w_nim_a=true;}
$(klon).append(element_dzieci.cloneNode(true));
}else{
if(czy_w_nim_a){
czy_w_nim_a=undefined;
if(!$(klon.firstChild).hasClass('mw-numbering-main-page')){
var tekst_rozdzialu=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(klon).html())));
var element_rozdzialu=str_p[0];
//if(j<=max_i_begin){++i_begin;};
Numerowanie(element_rozdzialu,"P",tekst_rozdzialu,pierwsze_dziecko);
break;
}
}
pierwsze_dziecko=undefined;
klon=document.createElement('div');
}
}
if(czy_w_nim_a){
if(!$(klon.firstChild).hasClass('mw-numbering-main-page')){
var tekst_rozdzialu=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(klon).html())));
var element_rozdzialu=str_p[0];
//if(j<=max_i_begin){++i_begin;};
Numerowanie(element_rozdzialu,"P",tekst_rozdzialu,pierwsze_dziecko);
}
}
}
}
var bookname=DodatkiSkrypt.Nazwy.BOOKNAME(((aktualna_strona)?(aktualna_strona):(DodatkiSkrypt.Info.page.fullname)));
var namespace=DodatkiSkrypt.Nazwy.NAMESPACE(((aktualna_strona)?(aktualna_strona):(DodatkiSkrypt.Info.page.fullname)));
bookname=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(bookname);
namespace=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(namespace);
$(id_numerowanie).DodatkiSkryptEach(function(i,element){
var iterator=DodatkiSkrypt.Szereg.Html.IteratorPotomkowyPoElemencieHtml(element);
while(true){
var element=iterator();
if(
(element)
&&(((element.tagName)&&($(element).filter('style, link, script, noscript').length>0))
||($(element).closest('style, link, script, noscript').length>0))
){continue;}
k++;
console.log(k,p,"TYTAN",j,i_begin,max_i_begin,element);
if(k<p){continue;};
if(!element){break;};
(function(element){
var tag_name=element.tagName;
var tag;
if(tag_name){tag=tag_name.toUpperCase();}else{tag=null;}
var tekst;
if(element.tagName){
var tag_element=element.tagName.toUpperCase()
}
if(!tag){
console.log("SS2",element);
FunkcjaZnacznikaP(element,false);
if(j<=max_i_begin){++i_begin;};
}else if(
((tag=="DIV")&&($(element).hasClass('mw-heading')))
||((tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6"))
){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
$(div).find('.numeracja, .mw-numbering-main-page, .mw-editsection').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}else if((tag=="DIV")&&(($(element).hasClass('center'))|($(element).parent().hasClass('template-center')))){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}else if((tag=="TD")||(tag=="TH")||(tag=="CAPTION")){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}else if((tag=="P")||(((tag=="B")||(tag=="I"))&&($(element).find('br').length==0))){
var div=document.createElement('div' );
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
console.log("SS1",element);
Numerowanie(element,tag,tekst);
}else if((tag=="DD")||(tag=="DT")){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
//var czy_li=false;
//for(var begin=div.firstChild;begin!=null;begin=begin.nextSibling){
// if(begin.tagName!=null){
// var tag_dziecko=begin.tagName.toUpperCase();
// if((!czy_li)&&((tag_dziecko=="DL")||(tag_dziecko=="DD"))){
// czy_li=true;
// }
// if(czy_li){
// div.removeChild(begin);
// }
// }
//}*/
if($(div).find("ul, ol, dl").length==0){
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}
}else if(tag=="LI"){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
var czy_li=false;
for(var begin=div.firstChild;begin!=null;begin=begin.nextSibling){
if(begin.tagName!=null){
var tag_name=begin.tagName.toUpperCase();
if((!czy_li)&&((tag_name=="UL")||(tag_name=="OL"))){
czy_li=true;
}
if(czy_li){
div.removeChild(begin);
}
}
}
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
if(!tekst){if(j<=max_i_begin){++i_begin;};return;}
Numerowanie(element,tag,tekst);
}else if(tag=="CENTER"){
var div=document.createElement('div')
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
if(!tekst){if(j<=max_i_begin){++i_begin;};return;}
Numerowanie(element,tag,tekst);
}else if(tag=="A"){
FunkcjaZnacznikaP(element,true);
var editsection=$(element).parents('.mw-editsection').parents('.mw-heading');
if(editsection.length>0){if(j<=max_i_begin){++i_begin;};return;}
if($(element).hasClass('a.external')){if(j<=max_i_begin){++i_begin;};return;};
var div=document.createElement('div');
$(div).html(element.outerHTML);
$(div).find('a.gadget-replylinks-reply').remove();
var element_a=$(div).children('a').get(0);
if(!element_a){if(j<=max_i_begin){++i_begin;};return;};
var href=element_a.getAttribute("href");
if(href=="#"){if(j<=max_i_begin){++i_begin;};return;}
if(!href){href=""};
if(!$(element_a).hasClass('external')){
tab_href=DodatkiSkrypt.Szereg.Napis.UrojoneStrony(href);
href=tab_href.href;
var czy_edit=tab_href.edit;
if((namespace=="")||(namespace=="Wikijunior")){
if(/^([^\/]*)(\/)(.*)$/g.test(href)){
href=href.replace(/^([^\/]*)(\/)(.*)$/g,function(s,s1,s2,s3){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return s3;
}
return s;
});
}else{
if(((namespace!="")?(namespace+":"+bookname):bookname)==href){
href="";
}
}
console.log(href,"LLLLLLLLLLLLL");
}else if(namespace=="Wikibooks"){
href=href.replace(/^([Ww][Ii][Kk][Ii][Bb][Oo][Oo][Kk][Ss]:[Bb]rudnopis\/[^\/]*\/[^\/]*)\/(.*)$/g,function(s,s1,s2){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return s2;
}
return s;
});
href=href.replace(/^([Ww][Ii][Kk][Ii][Bb][Oo][Oo][Kk][Ss]:[Bb]rudnopis\/[^\/]*\/[^\/]*)$/g,function(s,s1){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return "";
}
return s;
});
}else if(namespace=="Wikipedysta"){
href=href.replace(/^([^\/]*\/[^\/]*)(\/)(.*)$/g,function(s,s1,s2,s3){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return s3;
}
return s;
});
href=href.replace(/^([^\/]*\/[^\/]*)$/g,function(s,s1){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return "";
}
return s;
});
}
tekst=href;
}else{
tekst=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href,false);
}
var nazwa=$(element).html();
Numerowanie(element,tag,tekst,undefined,nazwa,czy_edit);
}else{
if(j<=max_i_begin){++i_begin;};
return;
};
})(element);
}
});
return [f,i_begin,j-1];
};
var liczba_json=LiczbaElementowaTablicowaJson();
var liczba_spis_tresci=0;
var UsuwaniePozostalosciSpisTresci=function(){
var css_id=$(id_numerowanie).find('.mw-numbering-main-page');
css_id=DodatkiSkrypt.Scribunto.StronicowyParser.FiltrujElementyRodzicaAleNiePod(id_numerowanie,css_id,false);
var strona_start_fun=new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode(id_numerowanie);
css_id=$(css_id).filter(function(i,element){
if(!strona_start_fun.CzyJestElementemPotomka(element)){
return true;
}
return false;
});
$(css_id).remove();
$(id_numerowanie).find('.css_numersubst').removeClass('css_numersubst');
}
if(liczba_json>0){
for(;;){
var [f,i_begin,j]=FunctionNumeracja(liczba_spis_tresci);
console.log(f,i_begin,j,"Licznik pominień",liczba_json);
return Promise.resolve();
if(j==liczba_json){
if(f>0){
liczba_spis_tresci+=i_begin+1;
UsuwaniePozostalosciSpisTresci();
}else{
return Promise.resolve();
};
}else{
UsuwaniePozostalosciSpisTresci();
return Promise.reject();
}
}
}
return Promise.reject();
}
this.UstawianieNumeracjiSpisuRzeczy=function(dane){
var firstheading=$('#firstHeading');
if($(firstheading).children("#mw-article-numbering").first().length==0){
var span=document.createElement('span');
$(span).html(dane+". ");
span.setAttribute("id","mw-article-numbering");
$(firstheading).contents().first().before(span);
}
}
this.NumerujRozdzialyArtykulu=function(element,artykul,aktualna_strona){
return promise_numerowanie.DodatkiSkryptThen(function(data){
var gadget_numerowanie=data[0];var gadget_numerowanie_normalne=data[1];var gadget_numerowanie_asynchroniczne=data[2];
if(!gadget_numerowanie){return;}
artykul=(artykul)?artykul:DodatkiSkrypt.Info.page.articlename;
aktualna_strona=(aktualna_strona)?aktualna_strona:DodatkiSkrypt.Info.page.fullname
var id_numerowanie=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element,true).first();
if(!gadget_numerowanie_normalne){
var promise=UstalanieZmiennychNumerowanie(aktualna_strona,id_numerowanie,function(data,aktualna_strona,id_numerowanie){
return this_zmienna.PreparujStronyJednostek(id_numerowanie,artykul,aktualna_strona,true).DodatkiSkryptThen(function([dane,czy_strona_zbiorcza_naprawde]){
if(czy_strona_zbiorcza_naprawde){
if((!dane)
||(($(id_numerowanie).hasClass('.rodzic_szablon_subst_js'))
||($(id_numerowanie).hasClass('.szablon_subst_js'))
||($(id_numerowanie).parents('.rodzic_szablon_subst_js, .szablon_subst_js').length>0)
)
){return Promise.resolve();}
this_zmienna.UstawianieNumeracjiSpisuRzeczy(dane);
return Promise.resolve();
}else{
return Promise.resolve();
}
});
});
return promise;
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"");
}
});
}
this.PreparujStronyJednostek=function(id_numerowanie,artykul,aktualna_strona,czy_bez_prefix){
aktualna_strona=aktualna_strona||DodatkiSkrypt.Info.page.fullbookname;
var namespace=DodatkiSkrypt.Nazwy.NAMESPACE(aktualna_strona);
var namespace=DodatkiSkrypt.Nazwy.Np(namespace,{"jaka":"kanoniczna",});
if((namespace!="")&&(namespace!="Wikijunior")){
if((namespace=="User")|(namespace=="Wikibooks")){
var namespacebook=DodatkiSkrypt.Nazwy.BOOKSPACENAME(aktualna_strona);
if(namespacebook==""){return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});};
}else if(/\stalk$/g.test(namespace)){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});;
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}
var artykul_parametr=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(artykul).replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"").replace(/[\s_]+/g," ");
var aktualna_strona_rozwazana=DodatkiSkrypt.Nazwy.FULLPAGENAME(aktualna_strona);
var aktualna_strona_parametr=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(aktualna_strona_rozwazana);
var czy_strona_numerowac="{{#invoke:StronicowyParser|CzyStronęNumerować|"+aktualna_strona_parametr+"}}";
var pelna_nazwa_artykulu="{{ArtykułSubst|pobierz pełną nazwę artykułu=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}";
var pelna_nazwa_ksiazki="{{ArtykułSubst|pobierz pełną nazwę książki=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}";
var przekierowanie_strony="{{#invoke:Techniczne|PrzekierowanieDoStrony|{{msg:PEŁNANAZWAKSIĄŻKI|"+aktualna_strona_parametr+"}}|wyspecjalizowana=tak}}";
var numer_naglowka="{{PobierzNumerNagłówka|{{msg:NAZWAARTYKUŁUKSIĄŻKI|bez dodatkowych sprawdzeń=tak}}|bez kategorii stronicowych=tak}}";
var numer_artykulu="{{PobierzNumerArtykułu|"+artykul_parametr+"|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki={{ArtykułSubst|pobierz pełną nazwę artykułu=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}|bez kategorii stronicowych=tak}}";
var czy_strona_subst="{{#invoke:StronicowyParser|CzyStronaSubst}}";
var czy_spis_tresci="{{#invoke:StronicowyParser|CzySpisTreści|artykuł="+artykul_parametr+"|wyspecjalizowana=tak}}";
var dane_ksiazki="{{#tag:nowiki|{{#invoke:Techniczne|EncodeParametr|{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis="+artykul_parametr+"|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki={{ArtykułSubst|pobierz pełną nazwę artykułu=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}|wyspecjalizowana=tak}}}}}}";
var nazwa_przestrzeni_ksiazki="{{NAZWAPRZESTRZENIKSIĄŻKI|bez dodatkowych sprawdzeń=tak}}";
var pelna_nazwa_ksiazki_artykulu="{{msg:PEŁNANAZWAKSIĄŻKI|"+aktualna_strona_parametr+"}}";
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(
'{{#if:'+czy_strona_numerowac+
'|{{#if:'+
'{{#ifeq:'+pelna_nazwa_artykulu+'|'+aktualna_strona_parametr+'|tak|'+
'{{#ifeq:'+pelna_nazwa_ksiazki+'|'+
'{{#if:'+przekierowanie_strony+
'|'+przekierowanie_strony+
'|'+pelna_nazwa_ksiazki_artykulu+
'}}|tak'+
'}}'+
'}}'+
'|{{#if:'+czy_strona_subst+
'|{{#switch:{{NAMESPACE}}'+
'||Wikijunior='+numer_naglowka+
'|{{Ns:User}}|{{Ns:Project}}={{#if:'+nazwa_przestrzeni_ksiazki+'|'+numer_naglowka+'}}'+
'}}'+
'|{{#if:'+czy_spis_tresci+
'|{{#switch:{{NAMESPACE}}'+
'||Wikijunior='+dane_ksiazki+
'|{{Ns:User}}|{{Ns:Project}}={{#if:'+nazwa_przestrzeni_ksiazki+'|'+dane_ksiazki+'}}'+
'}}'+
'|{{#switch:{{NAMESPACE}}'+
'||Wikijunior='+numer_artykulu+
'|{{Ns:User}}|{{Ns:Project}}={{#if:'+nazwa_przestrzeni_ksiazki+'|'+numer_artykulu+'}}'+
'}}'+
'}}'+
'}}'+
'|STRONASTART'+
'}}'+
'|nie'+
'}}',aktualna_strona_rozwazana,null,true,null,null,null,null,null,gadget_numerowanie_zapisz_dane_na_kliencie).DodatkiSkryptThen(function(data){
var dane=data.parse.text["*"];
if(dane==null){return ["",false];}else if(dane=="nie"){return ["",false];}
/**/
if(dane!="STRONASTART"){
if((dane!=null)&&(dane!="")&&(dane!="(błąd)")){
if((!/^[\[].*[\]]$/g.test(dane))&&(!/^[{].*[}]$/g.test(dane))){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,dane,czy_bez_prefix).DodatkiSkryptThen(function(){
var biezaca_strona_rozwazaca=DodatkiSkrypt.Nazwy.FULLPAGENAME(DodatkiSkrypt.Info.page.fullname);
var czy_zbiorcza_naprawde=(biezaca_strona_rozwazaca==aktualna_strona_rozwazana);
return [dane,czy_zbiorcza_naprawde];
});
}else{
dane=DodatkiSkrypt.Szereg.Tekst.Decode(dane);
var json=JSON.parse(dane);
if(json){
console.log(json,"SYSAS");
var artykul_spis_tresci=DodatkiSkrypt.Nazwy.ARTICLENAME(aktualna_strona);
var spis="Spis treści - "+artykul_spis_tresci;
var tab_spis=json[spis];
var numer_spisu_tresci;
if(tab_spis){
for(var p in tab_spis){
var dane_spisu=tab_spis[p][artykul_spis_tresci];
if(dane_spisu){
numer_spisu_tresci=p;
break;
}
}
}
if(numer_spisu_tresci){
this_zmienna.UstawianieNumeracjiSpisuRzeczy(numer_spisu_tresci);
}
return this_zmienna.NumerowanieStronGłównychPodręcznikowWedlugZebranychDanych(id_numerowanie,json,aktualna_strona).DodatkiSkryptThen(function(){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"");
}).DodatkiSkryptCatch(function(){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"");
}).DodatkiSkryptThen(function(){return ["",false]});
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}).DodatkiSkryptCatch(function(error){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
});
return promise;
}
}
DymkiSubst.GadgetDymkiSubst=function(){
/**/
var dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych=undefined;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych=undefined;
var dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych=undefined;
/**/
var dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych=undefined;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych=undefined;
var dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych=undefined;
/**/
var dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var dymkisubst_dymki_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_dymkisubst){
czy_nie_gconfig_dymkisubst=true;
mw.messages.set({
'DymkiSubst-name': 'Dymki nad linkami inteligentymi',
'DymkiSubst-description-page': 'Wikibooks:StronicowyParser',
'DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych' : "Ustawia dymki, nad linkami, dla linków inteligentnych na stronach niezbiorczych.",
'DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych' : "Ustawia dymki, nad linkami, dla linków nieinteligentnych na stronach niezbiorczych.",
'DymkiSubst-dymki_asynchroniczne_na_stronach_niezbiorczych' : "Sprawdza, czy na stronie niezbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych' : "Ustawia dymki, nad linkami, dla linków inteligentnych na stronach zbiorczych.",
'DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych' : "Ustawia dymki, nad linkami, dla linków nieinteligentnych na stronach zbiorczych.",
'DymkiSubst-dymki_asynchroniczne_na_stronach_zbiorczych' : "Sprawdza, czy na stronie zbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'DymkiSubst-dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'DymkiSubst-dymki_zapisz_dane_na_kliencie': 'Zapisuje dane, co do dymków na kliencie, ściagniete z serwera',
});
gConfig.register('DymkiSubst', {name: mw.msg('DymkiSubst-name'), descriptionPage: mw.msg('DymkiSubst-description-page')}, [
{
name: 'dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych']
},
{
name: 'dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych']
},
{
name: 'dymki_asynchroniczne_na_stronach_niezbiorczych',
desc: mw.msg('DymkiSubst-dymki_asynchroniczne_na_stronach_niezbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych']
},
{
name: 'dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych']
},
{
name: 'dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych']
},
{
name: 'dymki_asynchroniczne_na_stronach_zbiorczych',
desc: mw.msg('DymkiSubst-dymki_asynchroniczne_na_stronach_zbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych']
},
{
name: 'dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('DymkiSubst-dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'dymki_zapisz_dane_na_kliencie',
desc: mw.msg('DymkiSubst-dymki_zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_dymkisubst_dymki_zapisz_dane_na_kliencie']
},
]);
}
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych')==true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych')==true);
dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych = (gConfig.get('DymkiSubst', 'dymki_asynchroniczne_na_stronach_niezbiorczych')==true);
/**/
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych')==true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych')==true);
dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych = (gConfig.get('DymkiSubst', 'dymki_asynchroniczne_na_stronach_niezbiorczych')==true);
/**/
dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('DymkiSubst', 'dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
dymkisubst_dymki_zapisz_dane_na_kliencie=(gConfig.get('DymkiSubst', 'dymki_zapisz_dane_na_kliencie')==true);
}
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych=((dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych:true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych=((dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych:true);
dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych=((dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych!==undefined)?dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych:true);
/**/
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych=((dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych:true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych=((dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych:true);
dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych=((dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych!==undefined)?dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych:true);
/**/
dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=((dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!==undefined)?dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true);
dymkisubst_dymki_zapisz_dane_na_kliencie=((dymkisubst_dymki_zapisz_dane_na_kliencie!==undefined)?dymkisubst_dymki_zapisz_dane_na_kliencie:false);
/**/
this.KodKomunikatuDymku=function(kod){
var tab_kody={
"su":true,
"sun":true,
"iw":true,
"inw":true,
"iwew":true,
"inwew":true,
"iew":true,
"inew":true,
"niw":true,
"ninw":true,
"niew":true,
"ninew":true,
"was":true,
"wasew":true,
"wash":true,
"washew":true,
"wasn":true,
"wasnew":true,
"ipw":true,
"inpw":true,
"dwni":true,
"sup":true,
"sunp":true,
"iwp":true,
"inwp":true,
"iwewp":true,
"inwewp":true,
"iewp":true,
"inewp":true,
"niwp":true,
"ninwp":true,
"niewp":true,
"ninewp":true,
"wasp":true,
"wasewp":true,
"washp":true,
"washewp":true,
"wasnp":true,
"wasnewp":true,
"ipwp":true,
"inpwp":true,
"dwnip":true,
}
return tab_kody[kod];
}
this.UstalanieZmiennychTworzeniaDymkowego=function(aktualna_strona,element){
var funkcja=function(){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
if(wikikod){
var dymkisubst_dymki_nad_linkami_inteligentnymi=dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi=dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych;
var dymkisubst_dymki_asynchroniczne=dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych;
}else{
var dymkisubst_dymki_nad_linkami_inteligentnymi=dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi=dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych;
var dymkisubst_dymki_asynchroniczne=dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych;
}
return Promise.resolve([dymkisubst_dymki_nad_linkami_inteligentnymi,dymkisubst_dymki_nad_linkami_nieinteligentnymi,dymkisubst_dymki_asynchroniczne]);
});
}
if(dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
return Promise.resolve([false,false,false]);
}
});
}else{
return funkcja();
}
};
var promise_dymki=this.UstalanieZmiennychTworzeniaDymkowego();
var tab_promise_dymki=new Array();
tab_promise_dymki.push(promise_dymki);
var this_zmienna=this;
//var tab_promise=new Array();
//this.CzekanieNaZwolnienieWszystkichKorutynWTabeliObietnicDymkiSubst=function(){
// return DodatkiSkrypt.CzekanieNaZwolnienieWszystkichKorutynWTabeliObietnic(tab_promise);
//}
var dymki_muteks=new DodatkiSkrypt.Muteks();
var dymki_projektowe_muteks=new DodatkiSkrypt.Muteks();
var UstalanieZmiennychDymkowe=function(aktualna_strona,element,funkcja){
var dymkisubst_dymki_nad_linkami_inteligentnymi;var dymkisubst_dymki_nad_linkami_nieinteligentnymi;var dymkisubst_dymki_asynchroniczne;
return promise_dymki.DodatkiSkryptThen(function(data){
dymkisubst_dymki_nad_linkami_inteligentnymi=data[0];dymkisubst_dymki_nad_linkami_nieinteligentnymi=data[1];dymkisubst_dymki_asynchroniczne=data[2];
if(dymkisubst_dymki_asynchroniczne){
if(aktualna_strona){
tab_promise_dymki.push(this_zmienna.UstalanieZmiennychTworzeniaDymkowego(aktualna_strona,element));
promise_dymki=tab_promise_dymki.at(-1);
return promise_dymki;
}
}
return data;
}).DodatkiSkryptThen(function(data){
return funkcja(data,aktualna_strona,element);
}).DodatkiSkryptFinally(function(data){
if(dymkisubst_dymki_asynchroniczne){
if(aktualna_strona){
tab_promise_dymki.pop();
promise_dymki=tab_promise_dymki.at(-1);
}
}
return data;
});
}
this.lineHeight=function(id){
var lineheight=window.getComputedStyle(id, null).lineHeight;
return parseFloat(lineheight);
}
/*Funkcja do wyświetlania komunikatów do [[Szablon:Link wewnętrzny]]*/
this.WyswietlKomunikatInfoKombajn=function(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,komunikat){
var body=document.querySelector('body');
if(body==null){return;}
var bodycontent = document.querySelector('#bodyContent');
if(bodycontent==null){return;}
this.UsunKomunikatInfo();
var div=document.createElement('div');
div.position="absolute";
//var element_id=id.getBoundingClientRect();
var left_real=event_clientX+window_scrollX-30;
var top_real=element_id_bottom+window_scrollY;
if(top_real<=0){return;}
//var wysokosclinii=this.lineHeight(id);
if((wysokosclinii==null)||(isNaN(wysokosclinii))||(wysokosclinii<=0)){return;};
var eY=event_clientY+window_scrollY;
for (var i=0;;++i){
var pomiedzy_gornym_a_dolnym_polozeniem_pod=i*wysokosclinii;
var pomiedzy_gornym_a_dolnym_polozeniem_nad=(i+1)*wysokosclinii;
var top_real_dolny=top_real-pomiedzy_gornym_a_dolnym_polozeniem_pod;
var top_real_gorny=top_real-pomiedzy_gornym_a_dolnym_polozeniem_nad;
if((top_real_dolny<0)||(top_real_gorny<0)){return;};
if(pomiedzy_gornym_a_dolnym_polozeniem_pod>id.offsetHeight){
top_real=top_real_dolny;
break;
}
if((eY<=top_real_dolny)&&(eY>=top_real_gorny)){
top_real=top_real_gorny;
break;
}
if((pomiedzy_gornym_a_dolnym_polozeniem_pod>id.offsetHeight)&&(pomiedzy_gornym_a_dolnym_polozeniem_nad>id.offsetHeight)){return;};
}
console.log(5)
var left_komunukat_main=parseInt(left_real);
var inset=5;
div.style.left=(left_komunukat_main>5)?((parseInt(left_real)).toString()+'px'):(inset+"px");
div.classList.add("dymkisubst_link_wewnętrzny_komunikatów");
div.setAttribute("id","dymkisubst_id_animacja_komunikatów");
$(div).html(komunikat);
var div_element=$(body).DodatkiSkryptAppend(div).get(0);
var div_komunikat=$(div_element).children().first();
var width=$(div_komunikat).get(0).offsetWidth;
var width_body=(window.visualViewport)?window.visualViewport["width"]:window.innerWidth;
var comp=window.getComputedStyle($(div_element).get(0),null);
var paddingleft=parseFloat(comp.getPropertyValue("padding-left"));
var paddingright=parseFloat(comp.getPropertyValue("padding-right"));
if(width+10>width_body){
$(div_komunikat).css('width',(width_body-inset*2-paddingleft-paddingright)+"px");
}
var top=parseInt(top_real-div_element.offsetHeight-3);
if(top<0){top=0;}
div.style.top=top.toString()+'px';
var rectbodycontent=bodycontent.getBoundingClientRect();
var leftbodycontent=rectbodycontent.left+window.scrollX;
var widthbodycontent=bodycontent.offsetWidth;
var id_komunikat_right=left_real+div_element.offsetWidth;
var marginesRight=1;
if(widthbodycontent+leftbodycontent<id_komunikat_right+marginesRight){
var roznica_offsetow=id_komunikat_right-widthbodycontent-leftbodycontent;
var left_div_element=parseInt(left_real-(roznica_offsetow)-marginesRight);
div_element.style.left=(left_div_element>5)?((left_div_element).toString()+'px'):(inset+"px");
}
var div_element_rect=div_element.getBoundingClientRect();
var left_real_id=event_clientX+window_scrollX;
var left_real_div=div_element_rect.left+window_scrollX;
var roz_left=left_real_id-left_real_div;
var div_el=document.createElement('div');
div_el.setAttribute('class',"dymkisubst_link_wewnętrzny_komunikatów_wskaźnik");
var div_el_dod=$(div_element).DodatkiSkryptAppend(div_el);
var left_komunikat=roz_left-9;
$(div_el_dod).css('left',(left_komunikat>0)?(left_komunikat+'px'):0);
}
this.UsunKomunikatInfo=function(id){
var body=document.querySelector('body');
if(body==null){return;}
var id_animation=$('#dymkisubst_id_animacja_komunikatów');
if(id_animation!==null){
$(id_animation).remove();
if(id){$(id).data('dymkisubst_poprawnie',true);}
}else{
var link_wewnetrzny_komunikatow=$('.dymkisubst_link_wewnętrzny_komunikatów');
if((link_wewnetrzny_komunikatow!==null)&&(link_wewnetrzny_komunikatow.length>0)){
$(link_wewnetrzny_komunikatow).remove();
if(id){$(id).data('dymkisubst_poprawnie',true);}
}else{
if(id){$(id).data('dymkisubst_poprawnie',false);}
}
}
}
this.PobierzKodElementuRodzicaA=function(element_a){
var span_element=$(element_a).parent().filter('span.link');
if($(span_element).length>0){
var parent_element_a=$(span_element).get(0);
}else{
var parent_element_a=$(element_a).filter('a.link').get(0);
}
if(parent_element_a==null){return null;};
var element_link=parent_element_a.classList;
if((element_link!==null)&&(element_link.length>0)){
for(var a=0;a<element_link.length;++a){
var kod=element_link[a];
if(kod!="link"){
var czy_tak=this.KodKomunikatuDymku(kod);
if(czy_tak){
return kod;
}
}
}
}
return null;
}
var ApiAbort=function(id,funkcja){
return function(api){
var api_fun=function(){
var id=this;
$(id).off("mouseout",api_fun);
$(id).data('dymkisubst_poprawnie',false);
api.abort();
DymkiSubst.gadgetdymkisubst.UsunKomunikatInfo(id);
if(funkcja){funkcja(id);};
}
$(id).off("mouseout",api_fun).on("mouseout",api_fun);
return function(id){
$(id).off("mouseout",api_fun);
};
}
}
this.WyswietlKomunikatInfo=function(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom){
var tab_promise=new Array();
var Komunikat=function(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,tekst_komunikat){
if(!$(id).data('dymkisubst_poprawnie')){
this_zmienna.UsunKomunikatInfo();
return;
}
var div=document.createElement('div');
$(div).html(tekst_komunikat);
var P=function(element){
var komunikat=$(element).find("p:first-child");
$(komunikat).css("margin-top","0");
var komunikat=$(element).find("p:last-child");
$(komunikat).css("margin-bottom","0");
}
P(div);
tekst_komunikat=$(div).html();
this_zmienna.WyswietlKomunikatInfoKombajn(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,tekst_komunikat);
}
this.UsunKomunikatInfo();
var kod=this.PobierzKodElementuRodzicaA(id);
if(kod===null){return;}
var old_href=id.getAttribute('old_href');
var href=id.getAttribute('href');
if(href===null){
href="";
}else{
href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href);
href=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(href);
}
if(old_href){
old_href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(old_href);
old_href=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(old_href);
}
var strona=DodatkiSkrypt.Info.page.fullname;
var wikikod=((old_href!==null)?('{{#invoke:Brudnopis/Persino/Dymki|UzyskajOpisOdParametrówLinku|'+kod+'|'+href+'|'+old_href+'}}'):('{{#invoke:Brudnopis/Persino/Dymki|UzyskajOpisOdParametrówLinku|'+kod+'|'+href+'}}'));
/**/
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(wikikod,strona,null,true,null,null,null,null,null,dymkisubst_dymki_zapisz_dane_na_kliencie,ApiAbort(id)).DodatkiSkryptThen(function(data){
var tekst_komunikat=data.parse.text['*'];
Komunikat(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,tekst_komunikat);
}).DodatkiSkryptCatch((error) => {});
return promise;
}
this.UstawZdarzeniaKomunikatuInfo=function(rodzic,__muteks,aktualna_strona){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return UstalanieZmiennychDymkowe(aktualna_strona,rodzic,function(data,aktualna_strona,rodzic){
var dymkisubst_dymki_nad_linkami_inteligentnymi=data[0];var dymkisubst_dymki_nad_linkami_nieinteligentnymi=data[1];var dymkisubst_dymki_asynchroniczne=data[2];
if(!dymkisubst_dymki_nad_linkami_inteligentnymi){return;}
var klasa_link_wewnetrzny=$(rodzic).find('.link');
if($(klasa_link_wewnetrzny).length==0){return;};
klasa_link_wewnetrzny=DodatkiSkrypt.Scribunto.StronicowyParser.FiltrujElementyRodzicaAleNiePod(rodzic,klasa_link_wewnetrzny);
$(klasa_link_wewnetrzny).DodatkiSkryptEach(function(s,poszczegolna_klasa){
if($(poszczegolna_klasa).filter('span, a').length>0){
this_zmienna.UstawZdarzeniaKomunikatuElementuInfo(poszczegolna_klasa);
}
});
var __muteks=new DodatkiSkrypt.Muteks();
var tab_promise=new Array();
rodzic=DodatkiSkrypt.Scribunto.StronicowyParser.PoliczPodAleNiePodPodRodzica(rodzic);
$(rodzic).DodatkiSkryptEach(function(i,element_g){
var aktualna_strona=DodatkiSkrypt.Scribunto.StronicowyParser.AktualnaStronaElementuOpakowania(element_g);
tab_promise.push(this_zmienna.UstawZdarzeniaKomunikatuInfo(element_g,__muteks,aktualna_strona));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,__muteks||dymki_projektowe_muteks);
}
this.UruchomZdarzenieMouseOverDymkiInfo=function(event,id){
var element_id=id.getBoundingClientRect();
var wysokosclinii=this_zmienna.lineHeight(id);
var window_scrollX=window.scrollX;
var window_scrollY=window.scrollY;
var event_clientX=event.clientX;
var event_clientY=event.clientY;
var element_id_top=element_id.top;
var element_id_bottom=element_id.bottom;
/**/
var promise=$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
if($(id).data('dymkisubst_poprawnie')){
return DymkiSubst.gadgetdymkisubst.WyswietlKomunikatInfo(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom);
}
},null,dymki_muteks);
}
this.UstawZdarzeniaKomunikatuElementuInfo=function(poszczegolna_klasa){
var this_zmienna=this;
var element_link=poszczegolna_klasa.classList;
if((element_link!==null)&&(element_link.length>0)){
for(var a=0;a<element_link.length;++a){
var kod=element_link[a];
if(kod!="link"){
if(this.KodKomunikatuDymku(kod)){
var nie_span_ale_a=$(poszczegolna_klasa).filter('a.link');
var a_tag=((nie_span_ale_a.length>0)?($(nie_span_ale_a)):($(poszczegolna_klasa).find('a')));
if(a_tag.first().get(0)!=null){
$(a_tag).on("mouseover",function(){
var id=this;
$(id).data('dymkisubst_poprawnie',true);
this_zmienna.UruchomZdarzenieMouseOverDymkiInfo(event,id);
});
$(a_tag).on("mouseout",function(){
var id=this;
$(id).data('dymkisubst_poprawnie',false);
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DymkiSubst.gadgetdymkisubst.UsunKomunikatInfo(id);
},null,dymki_muteks);
});
break;
}
}
}
}
}
}
this.UstawTagiIKlasyKomunikatuInfo=function(rodzic,__muteks,aktualna_strona){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return UstalanieZmiennychDymkowe(aktualna_strona,rodzic,function(data,aktualna_strona,rodzic){
var dymkisubst_dymki_nad_linkami_inteligentnymi=data[0];var dymkisubst_dymki_nad_linkami_nieinteligentnymi=data[1];var dymkisubst_dymki_asynchroniczne=data[2];
if(!dymkisubst_dymki_nad_linkami_nieinteligentnymi){return;}
var tab_promise=new Array();
var CzyNieRysunek=function(element){
if($(element).filter('mw-file-description').parent().filter("figure, span").filter("[typeof=\"mw:File\"]").length>0){return false;};
if($(element).has(' > img.mw-file-element').parent().filter("figure, span").filter("[typeof=\"mw:File\"]").length>0){return false;};
return true;
}
var NieLinkiReferencji=function(element){
if($(element).parent().hasClass('reference')){return false;};
return true;
}
var Czy_w_toc=function(element){
var toc=new Array("toc","toc_spis","toc_wykaz");
for(var a=0;a<toc.length;++a){
var toc_pos=$(rodzic).find("."+toc[a]);
if((toc_pos!==null)&&(toc_pos.length>0)){
for(var b=0;b<toc_pos.length;++b){
var element_toc=toc_pos[b];
var el=$(element_toc).find(element)
if($(el).length>0){
return false;
}
}
}
}
return true;
}
var TableMenu=function(element){
var tablemenu=$(rodzic).find("table.tablemenu");
if((tablemenu!==null)&&(tablemenu.length>0)){
for(var s=0;s<tablemenu.length;++s){
var el=$(tablemenu[s]).find(element);
if($(el).length>0){
return false;
}
}
}
return true;
}
var NaglowekDokumentacji=function(element){
var dokumentacja=$(rodzic).find(".template-documentation #doc_editlinks, #documentation-meta-data");
if((dokumentacja!==null)&&(dokumentacja.length>0)){
for(var s=0;s<dokumentacja.length;++s){
var el=$(dokumentacja[s]).find(element);
if($(el).length>0){
return false;
}
}
}
return true;
}
var CategoryTree=function(element){
var a_element=$(rodzic).find('.CategoryTreeTag').find(element);
if($(a_element).length>0){
return false;
}
return true;
}
var TrybCiemny=function(element){
var elem1=$(rodzic).find('.uruchom_tryb_ciemny').find(element);
var elem2=$(rodzic).find('.uruchom_tryb_jasny').find(element);
if(($(elem1).length>0)||($(elem2).length>0)){
return false;
}
return true;
}
var BezSzablonSubst=function(element){
var element_tag=$(rodzic).find('.rodzic_szablon_subst_js, .szablon_subst_js').find(element);
if($(element_tag).length>0){return false;}
return true;
}
var Thumb=function(element){
var thumb=$(rodzic).find('.thumb').find(element);
if($(thumb).length>0){
var caption=$(rodzic).find('.thumb .thumbcaption').find(element);
if($(caption).length>0){
return true;
}
return false;
}
return true;
}
var Audio=function(element){
var thumb=$(rodzic).find('.audio').find(element);
if($(thumb).length>0){
return false;
}
return true;
}
var Button=function(element){
var button=$(element).filter("[role=\"button\"]");
if($(button).length>0){
return false;
}
return true;
}
var elementy_a=$(rodzic).find('a');
if($(elementy_a).length==0){return;};
elementy_a=DodatkiSkrypt.Scribunto.StronicowyParser.FiltrujElementyRodzicaAleNiePod(rodzic,elementy_a);
var tab_outer_a=new Array();
$(elementy_a).DodatkiSkryptEach(function(a,element_a){
var href=element_a.getAttribute('old_href')||element_a.getAttribute('href');
if((((href!==null)&&(href!=""))||(($(element_a).hasClass('selflink'))&&($(element_a).hasClass('mw-selflink'))))&&(href!="#")&&($(element_a).html()!="")&&(!$ (element_a).hasClass('image'))){
if(!((href)&&(href.match(/^javascript:/g)))){
var linenos=$(element_a).find("span.linenos");
var tak=(((linenos===null)||(linenos.length==0))
&&(CzyNieRysunek(element_a))
&&(NieLinkiReferencji(element_a))
&&(Thumb(element_a))
&&(Audio(element_a))
&&(NaglowekDokumentacji(element_a))
&&(Czy_w_toc(element_a))
&&(TableMenu(element_a))
&&(CategoryTree(element_a))
&&(TrybCiemny(element_a))
&&(BezSzablonSubst(element_a))
&&(Button(element_a))
);
if(tak){
if($(element_a).parent().filter('span.link').length>0){
tak=false;
}else{
tak=true;
}
}
if(!tak){
return;
}
}else{
return;
}
}
(function(element_a){
//var element_a=tab_outer_a[a];
var LinkURL=function(wynik_link_wewnetrzny,element_a){
//var element_outer_a=tab_outer_a[numer_wywolania];
$(element_a).addClass("link");
$(element_a).addClass(wynik_link_wewnetrzny);
this_zmienna.UstawZdarzeniaKomunikatuElementuInfo(element_a);
return element_a;
}
var strona_href=element_a.getAttribute('old_href')||element_a.getAttribute('href');
strona_href=(((strona_href)&&(strona_href!=""))?strona_href:"")
if(strona_href!==""){
strona_href=strona_href.replace(/[_\s]+/g,"_");
strona_href=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona_href);
var strona=mw.config.get('wgPageName');
var FunDymkiSubstEvent=function(event){
var id=this;
//$(element_a).off("mouseover",FunDymkiSubstEvent);
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var poszczegolna_klasa;
return DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:Linki|UzyskajKodWikiLinku|strona="+strona_href+"|wyspecjalizowana=tak}}",strona,null,true,null,null,null,null,null,dymkisubst_dymki_zapisz_dane_na_kliencie,
ApiAbort(id,function(id){
//$(id).off("mouseover",FunDymkiSubstEvent).on("mouseover",FunDymkiSubstEvent);
})).DodatkiSkryptThen(function(data){
$(id).off("mouseover",FunDymkiSubstEvent);
var wynik_linkURL=data.parse.text['*'];
var poszczegolna_klasa=LinkURL(wynik_linkURL,element_a);
$(id).data('dymkisubst_poprawnie',true);
this_zmienna.UruchomZdarzenieMouseOverDymkiInfo(event,id);
console.log("TYTAn124543336457")
/**/
}).DodatkiSkryptCatch((error) => {});
},null,dymki_muteks);
}
$(element_a).off("mouseover",FunDymkiSubstEvent).on("mouseover",FunDymkiSubstEvent);
}
})(element_a);
});
var __muteks=new DodatkiSkrypt.Muteks();
var tab_promise=new Array();
rodzic=DodatkiSkrypt.Scribunto.StronicowyParser.PoliczPodAleNiePodPodRodzica(rodzic);
$(rodzic).DodatkiSkryptEach(function(i,element_g){
var aktualna_strona=DodatkiSkrypt.Scribunto.StronicowyParser.AktualnaStronaElementuOpakowania(element_g);
tab_promise.push(this_zmienna.UstawZdarzeniaKomunikatuInfo(element_g,__muteks,aktualna_strona));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,__muteks||dymki_projektowe_muteks);
}
}
SzablonSubst.SzablonSubst=function(){
var szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej=undefined;
var szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej=undefined;
/**/
var szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej=undefined;
var szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej=undefined;
/**/
var szablonsubst_nie_uwzgledniaj_edycji_sekcji=undefined;
var szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var szablonsubst_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_szablonsubst){
czy_nie_gconfig_szablonsubst=true;
mw.messages.set({
'SzablonSubst-name': 'Rozwijanie szablonów',
'SzablonSubst-description-page': 'Wikibooks:StronicowyParser/SzablonSubst',
'SzablonSubst-nie_uwzgledniaj_edycji_sekcji': 'Wyłącz możliwość edycji sekcji w artykułach.',
'SzablonSubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej': 'Włącz rozwijanie szablonów, w JavaScript, nie na stronie zbiorczej.',
'SzablonSubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej': 'Sprawdza, czy na stronie niezbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.',
'SzablonSubst-rozwijanie_szablonow_na_stronie_zbiorczej': 'Włącz rozwijanie szablonów, w JavaScript, na stronie zbiorczej.',
'SzablonSubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej': 'Sprawdza, czy na stronie zbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.',
'SzablonSubst-rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'SzablonSubst-zapisz_dane_na_kliencie':'Zapisuje dane uzyskane z ładowanych stron ze serwerana klienta',
});
gConfig.register('SzablonSubst', {name: mw.msg('SzablonSubst-name'), descriptionPage: mw.msg('SzablonSubst-description-page')}, [
{
name: 'nie_uwzgledniaj_edycji_sekcji',
desc: mw.msg('SzablonSubst-nie_uwzgledniaj_edycji_sekcji'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-nie_uwzgledniaj_edycji_sekcji']
},
{
name: 'rozwijanie_szablonow_nie_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej']
},
{
name: 'rozwijanie-szablonow_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'zapisz_dane_na_kliencie',
desc: mw.msg('SzablonSubst-zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_szablonsubst-zapisz_dane_na_kliencie']
},
]);
}
szablonsubst_nie_uwzgledniaj_edycji_sekcji = (gConfig.get('SzablonSubst', 'nie_uwzgledniaj_edycji_sekcji')==true);
szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_nie_na_stronie_zbiorczej')==true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej')==true);
/**/
szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_na_stronie_zbiorczej')==true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej')==true);
/**/
szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
szablonsubst_zapisz_dane_na_kliencie=(gConfig.get('SzablonSubst', 'zapisz_dane_na_kliencie')==true);
}
szablonsubst_nie_uwzgledniaj_edycji_sekcji=((szablonsubst_nie_uwzgledniaj_edycji_sekcji!=undefined)?szablonsubst_nie_uwzgledniaj_edycji_sekcji:false);
szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej:true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej:true);
/**/
szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej:true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej:true);
/**/
szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:false);
szablonsubst_zapisz_dane_na_kliencie=((szablonsubst_zapisz_dane_na_kliencie!=undefined)?szablonsubst_zapisz_dane_na_kliencie:false);
/**/
this.UstalanieZmiennychRozwijaniaSzablonowego=function(aktualna_strona,element){
var funkcja=function(){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
if(wikikod){
var szablonsubst_rozwijanie_szablonow=szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej;
var szablonsubst_rozwijanie_szablonow_asynchroniczne=szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej
}else{
var szablonsubst_rozwijanie_szablonow=szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej;
var szablonsubst_rozwijanie_szablonow_asynchroniczne=szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej;
}
return Promise.resolve([szablonsubst_rozwijanie_szablonow,szablonsubst_rozwijanie_szablonow_asynchroniczne]);
});
}
if(szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
return Promise.resolve([false,false,false]);
}
});
}else{
return funkcja();
}
}
var promise_szablon=this.UstalanieZmiennychRozwijaniaSzablonowego();
var tab_promise_szablon=new Array();
tab_promise_szablon.push(promise_szablon);
var this_zmienna=this;
var UstalanieZmiennychSzablonowe=function(aktualna_strona,element,funkcja){
var szablonsubst_rozwijanie_szablonow;var szablonsubst_rozwijanie_szablonow_asynchroniczne;
return promise_szablon.DodatkiSkryptThen(function(data){
szablonsubst_rozwijanie_szablonow=data[0];szablonsubst_rozwijanie_szablonow_asynchroniczne=data[1];
if(szablonsubst_rozwijanie_szablonow_asynchroniczne){
if(aktualna_strona){
tab_promise_szablon.push(this_zmienna.UstalanieZmiennychRozwijaniaSzablonowego(aktualna_strona,element));
promise_szablon=tab_promise_szablon.at(-1);
return promise_szablon;
}
}
return data;
}).DodatkiSkryptThen(function(data){
return funkcja(data,aktualna_strona,element);
}).DodatkiSkryptFinally(function(){
if(szablonsubst_rozwijanie_szablonow_asynchroniczne){
if(aktualna_strona){
tab_promise_szablon.pop();
promise_szablon=tab_promise_szablon.at(-1);
}
}
});
}
var tab_num=new Array();
this.PobierzSzablon=function(element,nazwa,czy_numerowac,aktualna_strona){
element=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element);
var PobierzSzablon=function(element,nazwa,czy_numerowac){
return UstalanieZmiennychSzablonowe(aktualna_strona,element,function(data,aktualna_strona,element){
var szablonsubst_rozwijanie_szablonow=data[0];var szablonsubst_rozwijanie_szablonow_asynchroniczne=data[1];
var tab_promise=new Array();
if(!szablonsubst_rozwijanie_szablonow){return Promise.resolve($());}
if(czy_numerowac==undefined){czy_numerowac=true;}
var szablon_js;
if(!element){
szablon_js=DodatkiSkrypt.Szereg.Styl.ElementRodzic('.szablon_subst_js');
}else{
szablon_js=$(element).find('.szablon_subst_js');
}
var rodzic_szablon_subst_js=$(szablon_js).parent().filter('.rodzic_szablon_subst_js');
if(rodzic_szablon_subst_js.length==0){
rodzic_szablon_subst_js=$(szablon_js).filter('.szablon_subst_js');
}
if((szablon_js!==null)&&(szablon_js.length>0)){
for(var p=0;p<szablon_js.length;++p){
var element=szablon_js[p];
var potomek=((element)?($('.szablon_subst_js').find(element)):element);
if((potomek===null)||(potomek.length==0)){
var strona_szablon_js=undefined;
var nazwa_strony=$(element).parent().first()[0].querySelector('.nazwa_strony');
if(nazwa_strony){
strona_szablon_js=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(nazwa_strony).html())));
if(/^[_\s]*$/g.test(strona_szablon_js)){
strona_szablon_js=undefined;
}
}
if(!strona_szablon_js){
strona_szablon_js=((nazwa)?nazwa:(DodatkiSkrypt.Info.page.fullname));
}
var zawartosc;
var wzor_element=$(element).children("*");
if((wzor_element!==null)&&(wzor_element.length>0)){
zawartosc=$(element).html();
for(var i=0;i<wzor_element.length;++i){
var math=wzor_element[i].outerHTML;
var math_temp=math;
math=math.replace(/[\{\}\=\|]/g,function(s){
var tab={
"{":"{{(}}",
"}":"{{)}}",
"=":"{{=}}",
"|":"{{!}}"
};
return tab[s]||s;
}).replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/\//g,"&#47;");
math_temp=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(math_temp);
var re=new RegExp(math_temp,"g");
zawartosc=zawartosc.replace(re,math);
}
}else{
zawartosc=$(element).html();
}
var grupa=zawartosc.match(/\|\s*grupa\s*=\s*[^\|\{\}<>]+/g);
if(grupa!==null){
var grupa_temp=grupa.toString();
var grupa_temp2=grupa_temp;
grupa_temp=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(grupa_temp);
var re=new RegExp(grupa_temp,"g");
grupa=grupa.toString().replace(/\|\s*grupa\s*=\s*/g,"").replace(/^\s*/g,"").replace(/\s*$/g,"");
tab_num[grupa]=((tab_num[grupa])?tab_num[grupa]:0)+1;
zawartosc=zawartosc.replace(re,grupa_temp2+"|numer szablonu="+tab_num[grupa]);
}
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(((szablonsubst_nie_uwzgledniaj_edycji_sekcji)?("__NOEDITSECTION__\n"):"\n")+zawartosc,strona_szablon_js,null,true,p,false,true,null,null,szablonsubst_zapisz_dane_na_kliencie).DodatkiSkryptThen(function(data){
var wikikod=data.parse.text['*'];
var title=data.parse.title;
var number=data.parse.text.number;
wikikod=wikikod.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&#47;/g,"/");
var parent_szablon_js=szablon_js[number].parentNode;
var element_div;
if($(parent_szablon_js).hasClass('rodzic_szablon_subst_js')){
element_div=parent_szablon_js;
}else{
element_div=szablon_js[number];
}
$(element_div).html(wikikod);
element_div.setAttribute('nazwa_strony',title);
element_div.classList.add('szablon_subst_js_zanalizowany');
return PobierzSzablon(element_div,nazwa,czy_numerowac);
}).DodatkiSkryptCatch(function(error){});
tab_promise.push(promise);
}
}
}
return Promise.DodatkiSkryptAll(tab_promise).DodatkiSkryptThen(function(tab_rodzic_szablon_subst_js){
tab_rodzic_szablon_subst_js.forEach(function(rodzic_szablon_subst_js_2){
if(rodzic_szablon_subst_js_2){
rodzic_szablon_subst_js=DodatkiSkrypt.DodatkiSkryptJQuery(rodzic_szablon_subst_js,rodzic_szablon_subst_js_2);
}
});
return rodzic_szablon_subst_js;
});
});
}
return PobierzSzablon(element,nazwa,czy_numerowac).DodatkiSkryptThen(function(rodzic_szablon_subst_js){
return rodzic_szablon_subst_js;
});
}
this.PobierzSzablonyStronyNieZbiorczej=function(){
//return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](StronaSubst,new Array("analiza_stron_zbiorczych")).DodatkiSkryptThen(function(){
var id_strony=$(DodatkiSkrypt.Szereg.IdCSS(1)).first();
if(id_strony.length>0){
var muteks=new DodatkiSkrypt.Muteks();
return StronaSubst.analiza_stron_zbiorczych.AnalizujDalejSzablonSubst(id_strony[0],muteks);
}
}).DodatkiSkryptCatch(function(){});
//});
}
}
StronaSubst.WyswietlStronyKsiazki=function(){
var stronasubst_latex=undefined;
var stronasubst_mathml=undefined;
var stronasubst_opakuj_kategorie_ze_sortowaniem=undefined;
var stronasubst_przytnij_tekst=undefined;
var stronasubst_ukrywaj_toc=undefined;
var stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach=undefined;
var stronasubst_numerowanie_poszczegolnych_rozdzialow=undefined;
var stronasubst_aktualizowanie_nazw_artykulow=undefined;
var stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami=undefined;
var stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika=undefined;
var stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej=undefined;
var stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule=undefined;
var stronasubst_nie_usuwaj_styli=undefined;
var stronasubst_naprawiaj_naglowki=undefined;
var stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst=undefined;
/**/
var stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var stronasubst_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_stronasubst){
czy_nie_gconfig_stronasubst=true;
mw.messages.set({
'StronaSubst-name': 'Strona zbiorcza',
'StronaSubst-description-page': 'Wikibooks:StronicowyParser',
'StronaSubst-latex': 'Wstaw tekst latexowy wzorów matematycznych, w przeciwnym przypadku jest on w formie obrazków.',
'StronaSubst-mathml': 'Wstaw wzory matematyczne w formie znaczników HTML w postaci MathML.',
'StronaSubst-opakuj_kategorie_ze_sortowaniem' : 'W stronach zbiorczych opakowuje kategorie dla każdej strony, w postaci ramki.',
'StronaSubst-przytnij_tekst' : 'W stronach zbiorczych włącza ucinanie artykułu z początku i końca ze zbędnych białych znaków.',
'StronaSubst-ukrywaj_toc' : "Ukrywa, począwszy od jakiegoś poziomu wszystkich elementów spisów treści, na stronach zbiorczych.",
'StronaSubst-dymki_nad_linkami_w_ladowanych_dynamicznie_stronach' : "Włącza dymki, nad linkami, w ładowanych dynamicznie stronach, tworząc je inteligentnymi.",
'StronaSubst-numerowanie_poszczegolnych_rozdzialow': 'Włącz numerowanie poszczególnych rozdziałów',
'StronaSubst-aktualizowanie_nazw_artykulow' : 'Aktualizuje, w postaci linków, na podstawie spisów treści nazwy artykułów bez nagłówków.',
'StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami' : "Aktualizuje sekcje poszczegónych rozdziałów, według artykułów z nagłówkami, podręcznika ładowanych rozdziałami, w postaci linków.",
'StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika' : 'Aktualizuje, na podstawie tego ostatniego przed nim ustawienia na tak, sekcje poszczegónych rozdziałów artykułów, z nagłówkami, podręcznika ładowanych rozdziałami, w postaci linków, według spisów treści podręcznika, w przeciwnym wypadku według artykułów.',
'StronaSubst-aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule' : 'Aktualizuje, na podstawie tego przedostatniego i ostatniego, przed nim ustawienia na tak, elementy sekcji rozdziałów ładowanych rozdziałami artykułów, z nagłówkami, według spisów treści, w postaci linków, nawet wtedy, gdy one tam nie istnieją.',
'StronaSubst-aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej' : 'Aktualizuje nagłówki, nieartykularne, strony głównej podręcznika na stronie zbiorczej.',
'StronaSubst-nie_usuwaj_styli' : 'Nie usuwa styli z nagłówków ładowanych stron.',
'StronaSubst-naprawiaj_naglowki' : 'Naprawia nagłówki strony.',
'StronaSubst-rozwijaj_szablony_oznaczone_szablonem_szablonsubst' : 'Rozwijaj szablony oznaczone szablonem SzablonSubst.',
'StronaSubst-uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'StronaSubst-uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom, ramkę postępu ładowania stron, tylko dla stron ładowanych na głównej stronie zbiorczej',
'StronaSubst-zapisz_dane_na_kliencie': 'Ściągnięte dane zapisujena kliencie, by później mieć do nich szybszy dostęp',
});
gConfig.register('StronaSubst', {name: mw.msg('StronaSubst-name'), descriptionPage: mw.msg('StronaSubst-description-page')}, [
{
name: 'latex',
desc: mw.msg('StronaSubst-latex'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_latex']
},
{
name: 'mathml',
desc: mw.msg('StronaSubst-mathml'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_mathml']
},
{
name: 'opakuj_kategorie_ze_sortowaniem',
desc: mw.msg('StronaSubst-opakuj_kategorie_ze_sortowaniem'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_opakuj_kategorie_ze_sortowaniem']
},
{
name: 'przytnij_tekst',
desc: mw.msg('StronaSubst-przytnij_tekst'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_przytnij_tekst']
},
{
name: 'ukrywaj_toc',
desc: mw.msg('StronaSubst-ukrywaj_toc'),
type: 'integer',
deflt: 0,
validation: function(n){ if((n<0)||(n==1)){ throw 'Wartość dotycząca poziomu ukrywania spisów treści jest nieprawidłowa!' }; return n; },
legacy: [window, 'wb_stronasubst_ukrywaj_toc']
},
{
name: 'dymki_nad_linkami_w_ladowanych_dynamicznie_stronach',
desc: mw.msg('StronaSubst-dymki_nad_linkami_w_ladowanych_dynamicznie_stronach'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach']
},
{
name: 'numerowanie_poszczegolnych_rozdzialow',
desc: mw.msg('StronaSubst-numerowanie_poszczegolnych_rozdzialow'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_numerowanie_poszczegolnych_rozdzialow']
},
{
name: 'aktualizowanie_nazw_artykulow',
desc: mw.msg('StronaSubst-aktualizowanie_nazw_artykulow'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_aktualizowanie_nazw_artykulow']
},
{
name: 'aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami',
desc: mw.msg('StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami']
},
{
name: 'aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika',
desc: mw.msg('StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika']
},
{
name: 'aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule',
desc: mw.msg('StronaSubst-aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule']
},
{
name: 'aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej',
desc: mw.msg('StronaSubst-aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej']
},
{
name: 'nie_usuwaj_styli',
desc: mw.msg('StronaSubst-nie_usuwaj_styli'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_nie_usuwaj_styli']
},
{
name: 'naprawiaj_naglowki',
desc: mw.msg('StronaSubst-naprawiaj_naglowki'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_naprawiaj_naglowki']
},
{
name: 'rozwijaj_szablony_oznaczone_szablonem_szablonsubst',
desc: mw.msg('StronaSubst-rozwijaj_szablony_oznaczone_szablonem_szablonsubst'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst']
},
{
name: 'uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('StronaSubst-uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('StronaSubst-uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'zapisz_dane_na_kliencie',
desc: mw.msg('StronaSubst-zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_zapisz_dane_na_kliencie']
},
]);
}
stronasubst_latex = (gConfig.get('StronaSubst', 'latex')==true);
stronasubst_mathml = (((gConfig.get('StronaSubst', 'mathml'))&&(!stronasubst_latex))==true);
stronasubst_opakuj_kategorie_ze_sortowaniem = (gConfig.get('StronaSubst', 'opakuj_kategorie_ze_sortowaniem')==true);
stronasubst_przytnij_tekst = (gConfig.get('StronaSubst', 'przytnij_tekst')==true);
stronasubst_ukrywaj_toc = gConfig.get('StronaSubst', 'ukrywaj_toc');
stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach = gConfig.get('StronaSubst', 'dymki_nad_linkami_w_ladowanych_dynamicznie_stronach');
stronasubst_numerowanie_poszczegolnych_rozdzialow = gConfig.get('StronaSubst', 'numerowanie_poszczegolnych_rozdzialow');
stronasubst_aktualizowanie_nazw_artykulow = (gConfig.get('StronaSubst', 'aktualizowanie_nazw_artykulow')==true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami = (gConfig.get('StronaSubst', 'aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami')==true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika = (gConfig.get('StronaSubst','aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika')==true);
stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej = (gConfig.get('StronaSubst','aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej')==true);
stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule = (gConfig.get('StronaSubst','aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule')==true);
stronasubst_nie_usuwaj_styli = (gConfig.get('StronaSubst','nie_usuwaj_styli')==true);
stronasubst_naprawiaj_naglowki = (gConfig.get('StronaSubst','naprawiaj_naglowki')==true);
stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst = (gConfig.get('StronaSubst','rozwijaj_szablony_oznaczone_szablonem_szablonsubst')==true);
stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('StronaSubst','uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('StronaSubst','uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
stronasubst_zapisz_dane_na_kliencie = (gConfig.get('StronaSubst','zapisz_dane_na_kliencie')==true);
}
//var podglad=document.querySelector('body:not(.action)');
//if(podglad){return;}
var stronasubst_tablica_tych_samych=new Array();
var stronasubst_tablica_rozdzialow=new Array();
var stronasubst_tablica_alternatywnych_nazw=new Array();
stronasubst_latex=((stronasubst_latex!==undefined)?stronasubst_latex:false);
stronasubst_mathml=((stronasubst_mathml!==undefined)?stronasubst_mathml:true);
stronasubst_opakuj_kategorie_ze_sortowaniem=((stronasubst_opakuj_kategorie_ze_sortowaniem!==undefined)?stronasubst_opakuj_kategorie_ze_sortowaniem:false);
stronasubst_przytnij_tekst=((stronasubst_przytnij_tekst!==undefined)?stronasubst_przytnij_tekst:true);
stronasubst_ukrywaj_toc=parseInt(((stronasubst_ukrywaj_toc!==undefined)?stronasubst_ukrywaj_toc:0));
stronasubst_ukrywaj_toc=((!isNaN(stronasubst_ukrywaj_toc))?stronasubst_ukrywaj_toc:0);
stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach=((stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach!==undefined)?stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach:true);
stronasubst_numerowanie_poszczegolnych_rozdzialow=((stronasubst_numerowanie_poszczegolnych_rozdzialow!==undefined)?stronasubst_numerowanie_poszczegolnych_rozdzialow:true);
stronasubst_aktualizowanie_nazw_artykulow=((stronasubst_aktualizowanie_nazw_artykulow!==undefined)?stronasubst_aktualizowanie_nazw_artykulow:true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami=((stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami!==undefined)?stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami:true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika=((stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika!==undefined)?stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika:false);
stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej=((stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej!==undefined)?stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej:true);
stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule=((stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule!==undefined)?stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule:false);
stronasubst_nie_usuwaj_styli=((stronasubst_nie_usuwaj_styli!==undefined)?stronasubst_nie_usuwaj_styli:true);
stronasubst_naprawiaj_naglowki=((stronasubst_naprawiaj_naglowki!==undefined)?stronasubst_naprawiaj_naglowki:false);
stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst=((stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst!==undefined)?stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst:true);
/**/
stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!=undefined)?stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true;
/**/
stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!=undefined)?stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true;
stronasubst_zapisz_dane_na_kliencie=(stronasubst_zapisz_dane_na_kliencie!=undefined)?stronasubst_zapisz_dane_na_kliencie:false;
/**/
var this_zmienna=this;
var NiePobranaStronaLubNieIstnieje=function(title,strona_hash,elements,muteks_stronasubst){
var tab_promise=new Array();
var a=document.createElement('a');/*Tworzenie linku*/
a.setAttribute('href',"/wiki/"+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(title));
$(a).html(strona_hash);
var subtitle=DodatkiSkrypt.Szereg.Napis.SubTitle(strona_hash)
var span=document.createElement('span');
$(span).append(a);
span.setAttribute("class","niw link");
var strong=document.createElement("strong");
$(strong).append(span);
var przed=document.createTextNode("{{:");
var po=document.createTextNode("}}");
$(span).before(przed);
$(strong).append(po);
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
for(var q in elements){
(function(q){
var element=elements[q];
$(element).html("");
$(element).append(strong);
$(element).css('display',"block");
var parent=element.parentNode;
if((parent!==null)&&(parent.tagName.toUpperCase()=="DIV")){
parent.style.display="block";
}
var pasek=element.parentNode.querySelector('.postęp_ładowania_artykułu');
if(pasek!==null){
element.parentNode.removeChild(pasek);
}
$(element).filter('.strona_subst').addClass("strona_subst_zanalizowane");
$(element).filter('.strona_subst').parent(".rozdział_książki").children('.mw-heading').children(hn).not(toc_h).attr("id_podstrona",subtitle);
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks));
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks));
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_stronasubst));
})(q);
}
return Promise.DodatkiSkryptAll(tab_promise);
}
var WikikodTitle=function(data,tabs,titles,tabstrona,muteks_stronasubst,tablica_przednaglowkowa_html,stronasubst_latex,stronasubst_mathml){
var title=data.parse.title;
var wikikod=data.parse.text['*'];
var t=data.parse.text.number;
var strona_hash=titles[t];
var elements=tabstrona[strona_hash];
if(wikikod==null){
return NiePobranaStronaLubNieIstnieje(title,strona_hash,elements,muteks_stronasubst);
}
var tab_promise_fun=new Array();
//var tab_promise=new Array();
for(var q in elements){
var element=elements[q];
$(element).parent().children(".postęp_ładowania_artykułu").remove();
$(element).css('display','block');
$(element).html(wikikod);
(function(element,title,titles){
tab_promise_fun.push(function(){return this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(element);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.ZamienianeAdresoweLinkoweReferencjiByByłyWskazywalneDoStronyAktualnej(element,title,titles);});
})(element,title,titles);
}
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);});
(function(elements,tabs,strona_hash,tablica_przednaglowkowa_html,stronasubst_tablica_alternatywnych_nazw,stronasubst_tablica_tych_samych,stronasubst_tablica_rozdzialow,stronasubst_latex,stronasubst_mathml){
tab_promise_fun.push(function(){
return DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(elements,tabs,strona_hash,tablica_przednaglowkowa_html,stronasubst_tablica_alternatywnych_nazw,stronasubst_tablica_tych_samych,stronasubst_tablica_rozdzialow,true,stronasubst_latex,stronasubst_mathml);
});
})(elements,tabs,strona_hash,tablica_przednaglowkowa_html,stronasubst_tablica_alternatywnych_nazw,stronasubst_tablica_tych_samych,stronasubst_tablica_rozdzialow,stronasubst_latex,stronasubst_mathml);
tab_promise_fun.push(function(){return DodatkiSkrypt.Nawigacja.createCollapseButtons(elements);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Nawigacja.createNavigationBarToggleButton(elements);});
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Strona.OdkywanieSpisuMateriiTOC();
//},null,muteks_stronasubst));
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Boksy.StickyXY();
//},null,muteks_stronasubst));
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Boksy.NotOverflowXY();
//},null,muteks_stronasubst));
/**/
if(stronasubst_numerowanie_poszczegolnych_rozdzialow){
for(var q in elements){
var element=elements[q];
(function(element){
var str_fun=$(element).parent().find("> div.mw-heading").first().find(" > span.numeracja");
if(str_fun.length>0){
var numer=$(str_fun[0]).html();
numer=DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(numer).replace(/\.$/g,"");
tab_promise_fun.push(function(){return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](NumerSubst,new Array("numer")).DodatkiSkryptThen(function(){
return NumerSubst.numer.NumerowanieNaglowkowStron(element,numer,true);
});
});
}
})(element);
}
}
//var strona_start=$(elements[0]).parents(".strona_start, .rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .artykułsubst");
//var rodzic=undefined;
//if((strona_start!==null)&&(strona_start.length>0)){
// rodzic=strona_start.get(0);
//}
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
//},null,muteks_stronasubst));
/**/
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);});
/**/
for(var q in elements){
var element=elements[q];
(function(element){
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.QuizIframe(element,title);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.PoprawianieNapisoweNumeruWprowadzeniaTekstu(element);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.ZmienianieNazwReferencjiNaNazwyProjektuWoluminu(element);});
if(stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach){
tab_promise_fun.push(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var muteks=new DodatkiSkrypt.Muteks();
var tab_promise_fun=new Array();
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks,strona_hash);});
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks,strona_hash);});
return DodatkiSkrypt.PoKoleiRozmieszczanieKorutyn(undefined,undefined,tab_promise_fun);
});
});
}
if(stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst){
tab_promise_fun.push(function(){
var muteks_szablon=new DodatkiSkrypt.Muteks();
return this_zmienna.AnalizujDalejSzablonSubst(element,muteks_szablon,strona_hash);
});
}
})(element);
}
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.PoKoleiRozmieszczanieKorutyn(undefined,undefined,tab_promise_fun);
},null,muteks_stronasubst);
}
var StronaSubstAnaliza=function(element_strony,wikikod,aktualna_strona,muteks_stronasubst){
var czy_wikikod=wikikod.match(/^[_\s]*$/g);
var strona_start=DodatkiSkrypt.Szereg.Styl.ElementRodzic('.strona_start');
if(czy_wikikod){
return;
}
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
var heading=DodatkiSkrypt.Szereg.Styl.HeadingHn();
element_strony=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element_strony);
var tab_promise=new Array();
var element_strony_przed=$(element_strony).find(hn).not(toc_h);
var element_parser=$(element_strony_przed).parents(DodatkiSkrypt.Szereg.IdCSS(1));
var tablica_przednaglowkowa_html=new Array();
(function(){
for (mw_parser_output of element_parser){
var iterator=DodatkiSkrypt.Szereg.Html.IteratorPotomkowyPoElemencieHtml(mw_parser_output,true);
while(true){
var element_html=iterator();
if(!element_html){break;}
if($(element_strony_przed).filter(element_html).length>0){return;};
var tagname=element_html.tagName;
var czy_headline=((tagname)&&(tagname.match(/^H\d+$/g)));
if(czy_headline){
var tekst_bez_stylow_bez_numeracji=DodatkiSkrypt.Szereg.Napis.KodHTMLProwadzeniaTekstu(element_html);
var tekst_bez_stylow=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(tekst_bez_stylow_bez_numeracji));
var id=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(tekst_bez_stylow);
/**/
tablica_przednaglowkowa_html[id]=(tablica_przednaglowkowa_html[id]||0)+1;
}
}
};
})();
var rozdzial_ksiazki="rozdział_książki";
var tagclass_1=$(element_strony).filter("."+rozdzial_ksiazki).not('.klasa_książki > .klasa_nagłówka > .rozdział_książki');
var tagclass_2=$(element_strony).filter('.klasa_książki').children('.klasa_nagłówka').children("."+rozdzial_ksiazki);
var tagclass=$(DodatkiSkrypt.DodatkiSkryptJQuery(tagclass_1,tagclass_2));
if(tagclass===null){
return null;
}
var liczba_elementow=tagclass.length;
if(liczba_elementow==0){
return null;
}
var titles=new Array();
var tabstrona=new Array();
var tabs=new Array();
var tab_section=new Array();
var tab_hn=new Array();
/**/
var edit_action=function(numer,strona,hn_element,link_strona,czy_link_nie_w_naglowku){
var div_heading=$(hn_element).closest('.mw-heading');
var heading=($(div_heading).length>0)?$(div_heading):$(hn_element);
var linkstrony_editsection=$(heading).children('.mw-editsection').first().get(0);
var czy_linkstrony_editsection=$(linkstrony_editsection).has('.stronasubst-edytuj').get(0);
if(!linkstrony_editsection){
var editsection=document.createElement('span');
$(editsection).addClass('mw-editsection');
$(heading).first().append(editsection);
}
var mw_editsection=$(heading).first().find('.mw-editsection');
if(czy_linkstrony_editsection==null){
var skin_mobilny=($('body.skin-minerva').length>0);
if(!skin_mobilny){
var bracket_poczatek=document.createElement('span');
$(bracket_poczatek).addClass('mw-editsection-bracket');
$(bracket_poczatek).html("[");
var a=document.createElement('a');
$(a).attr({
'href':"/w/index.php?title="+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(strona,false,true)+"&action=edit"+((numer>0)?("§ion="+numer):""),
'title':"Edytuj artykuł: "+link_strona,
'class':'stronasubst-edytuj',
});
$(a).html("edytuj");
var bracket_koniec=document.createElement('span');
$(bracket_koniec).addClass('mw-editsection-bracket');
$(bracket_koniec).html("]");
$(mw_editsection).append(bracket_poczatek);
$(mw_editsection).append(a)
$(mw_editsection).append(bracket_koniec);
}else{
var a=document.createElement('a');
$(a).attr({
'class':"cdx-button cdx-button--size-large cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--icon-only cdx-button--weight-quiet stronasubst-edytuj",
'role':'button',
'title':"Edytuj sekcję: "+link_strona,
'href':"/w/index.php?title="+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(strona,false,true)+"&action=edit"+((numer>0)?("§ion="+numer):"")
});
var span1=document.createElement('span');
$(span1).attr('class','minerva-icon minerva-icon--edit');
var span2=document.createElement('span');
$(span2).html("edytuj");
$(a).append(span1);
$(a).append(span2);
$(mw_editsection).append(a);
}
}
linkstrony_editsection=$(heading).children('.mw-editsection').first().has('.stronasubst-artykuł').get(0);
if(linkstrony_editsection==null){
var mw_editsection_bracket=$(mw_editsection).find('a').first().get(0);
if(mw_editsection_bracket!==null){
if(czy_link_nie_w_naglowku){
var skin_mobilny=($('body.skin-minerva').length>0);
if(!skin_mobilny){
var a=document.createElement('a');
$(a).html("artykuł");
$(a).attr({
"href":"/wiki/"+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(link_strona),
"title":"Zobacz artykuł: "+link_strona,
"class":"stronasubst-artykuł",
});
var span=document.createElement('span');
$(span).html("| ");
$(span).attr('class',"mw-editsection-bracket");
var czy_ma=$(mw_editsection_bracket).parent().hasClass('link');
if(czy_ma){
var rodzic_mw_editsection_bracket=$(mw_editsection_bracket).parent();
$(rodzic_mw_editsection_bracket).before(span);
var span2=$(rodzic_mw_editsection_bracket).prev();
if($(span2).length>0){
$(span2).before(a);
}else{
$(mw_editsection).append(a);
}
}else{
$(mw_editsection_bracket).before(span);
var span2=$(mw_editsection_bracket).prev();
if($(span2).length>0){
$(span2).before(a);
}else{
$(mw_editsection).append(a);
}
}
}else{
var a=document.createElement('a');
$(a).attr({
'class':"cdx-button cdx-button--size-large cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--icon-only cdx-button--weight-quiet stronasubst-artykuł",
'role':'button',
'title':"Zobacz artykuł: "+link_strona,
'href':"/wiki/"+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(link_strona)
});
var span1=document.createElement('span');
$(span1).attr('class','minerva-icon minerva-icon--link');
var span2=document.createElement('span');
$(span2).html("przejdź");
$(a).append(span1);
$(a).append(span2);
var mw_editsection_bracket=$(mw_editsection).find('a').first().get(0);
var czy_ma=$(mw_editsection_bracket).parent().hasClass('link');
if(czy_ma){
$(mw_editsection_bracket).parent().filter('.link').before(a);
}else{
$(mw_editsection_bracket).before(a);
}
}
}
}
}
$(heading).children('.mw-editsection').DodatkiSkryptEach(function(i,element){
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks,aktualna_strona));
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks,aktualna_strona));
});
}
/**/
var ZmienianieElementoweIndeksuStronyOrazSamegoTOC=function(data,muteks_wolumin,tab_section,__FUNKCJA){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var wikikod=data.parse.text['*'];
var c=data.parse.text.number;
if(/^\s*$/g.test(wikikod)){return;}
if(tab_section.length==0){return;}
var tab_c=tab_section[c];
if(typeof(tab_c)=="string"){return;}
if(tab_c.length!=undefined){
var headline=tab_c[0];
}else{
var headline=tab_c;
}
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
wikikod=__FUNKCJA(headline,wikikod,tab_c);
headline=DodatkiSkrypt.Szereg.Napis.ZmienianieNapisuWprowadzeniaTekstu(headline,wikikod);
DodatkiSkrypt.Strona.ZamienianieNazwyLinkuSpisuMateriiTOC(headline,true,stronasubst_latex);
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
if(stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach){
//var muteks=new DodatkiSkrypt.Muteks();
//return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var headline_nowe=headline;
if(headline_nowe){
var muteks=new DodatkiSkrypt.Muteks();
var tab_promise_fun=new Array();
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(headline_nowe,muteks,aktualna_strona);});
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(headline_nowe,muteks,aktualna_strona);});
return DodatkiSkrypt.PoKoleiRozmieszczanieKorutyn(undefined,undefined,tab_promise_fun);
}
});
}
},null,muteks_wolumin);
}
var muteks_wolumin=new DodatkiSkrypt.Muteks();
var tab_fun=new Array();
for (var i=0;i<liczba_elementow;++i){
var tagclassname=tagclass[i];
var szablon_subst_js=$(element_strony).find(".rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .szablon_subst_js.szablon_subst_js_zanalizowany");
var CzyOdrzucic=function(){
var potomek_analizowany=$(szablon_subst_js).find(tagclassname);
return (potomek_analizowany.length>0);
}
if(CzyOdrzucic()){continue;}
if(tagclassname.tagName.toUpperCase()!="DIV"){
return;
}
var class_element=$(tagclassname).children('.strona_subst');
var element;
if((class_element!==null)&&(class_element.length==1)){
element=class_element[0];
if(element.tagName.toUpperCase()!="DIV"){
return;
}
}else{
console.error("Wystąpił błąd: ", "Liczba elementów w div'ie, tzn. .strona_subst, jest nierówna jeden:",class_element.length);
return;
}
var czy_link_nie_w_naglowku;
var strona_headline=$(tagclassname).find("> "+heading+", > h1, > h2, > h3, > h4, > h5, > h6").not(toc_h);
var link_strona;
if((strona_headline!==null)&&(strona_headline.length==1)){
strona_a=$(strona_headline[0]).find('a');
if((strona_a!==null)&&(strona_a.length==1)){
link_strona=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(strona_a[0].getAttribute('href'));
if(link_strona!==null){
var re=/\/wiki\//g;
if(re.test(link_strona)){
link_strona=link_strona.substring(6,link_strona.length);
czy_link_nie_w_naglowku=false;
}else{
return;
}
}
}else{
link_strona=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(element).html()));
czy_link_nie_w_naglowku=true;
}
}else{
console.error("Wystąpił błąd: ", "Liczba nagłówków się nie zgadza, jest nierówna jeden!",strona_headline.length);
return;
}
var re = /^[_\s]*$/g;
var dopasowanie = re.test(link_strona);
if(dopasowanie){
return;
};
link_strona=link_strona.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ").replace(/&/g,"&").replace(/ /g," ");
var hash=link_strona.replace(/^([^#]*)#(.*)$/,"$2").replace(/&/g,"&").replace(/ /g,"_");
/**/
var hn_element=strona_headline[0];
if((hn_element===null)||(!hn_element.tagName.toUpperCase().match(/^H\d+$/g))){return;}
$(hn_element).closest('.mw-heading').children('.mw-editsection').remove();
$(hn_element).children('.mw-editsection').remove();
tab_section[i]=new Array(hn_element,link_strona,czy_link_nie_w_naglowku);
var strona=link_strona.match(/^[^#]*/g).toString();
/**/
var PraceIteracyjne=function(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i){
var tab_promise=new Array();
if(/#/g.test(link_strona)){
/**/
var hash=link_strona.replace(/^([^#]*)#(.*)$/g,"$2");
/**/
strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona);
hash=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(hash);
/**/
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|KtóraSekcjaStrony|"+strona+"|"+hash+"}}",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var wikikod=data.parse.text['*'];
var c=data.parse.text.number;
/**/
var tab_c=tab_section[c];
edit_action(parseInt(wikikod),tab_c[1].match(/^[^#]*/g).toString(),tab_c[0],tab_c[1],tab_c[2]);
},null,muteks_wolumin);
}).DodatkiSkryptCatch((error) => {}));
if(stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami){
if(!stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|ZwróćSekcjęNagłówkaStrony|"+strona+"|"+hash+"}}</div>",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_section,function(headline,wikikod,tab_c){
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod,function(wikikod){
wikikod=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod));
return wikikod;
});
return DodatkiSkrypt.Strona.LinkStrona(strona,hash,wikikod);
});
}).DodatkiSkryptCatch((error) => {}));
}else{
var uzupelniaj_sekcje_artykulow;
if(stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule){
uzupelniaj_sekcje_artykulow="tak";
}else{
uzupelniaj_sekcje_artykulow="";
}
link_strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(link_strona);
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:Ramka|Rozwiń|{{#invoke:StronicowyParser|LiniaArtykułuKsiążki|nazwa przestrzeni nazw=(main)|nazwa jednostki="+link_strona+"|analiza=tak|nagłówek=tak|uzupełniaj sekcje artykułów="+uzupelniaj_sekcje_artykulow+"|wyspecjalizowana=tak}}}}",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_section,function(headline,wikikod,tab_c){
var stare=tab_c[1];var nowe;
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod);
nowe=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod)),true);
stronasubst_tablica_alternatywnych_nazw[stare]=nowe;
var div=document.createElement('div');
$(div).html(wikikod);
var a=$(div).find('a');
if((a!==null)&&(a.length>0)){
$(a[0]).attr('title',stare);
}
return $(div).html();
});
}).DodatkiSkryptCatch((error) => {}));
}
}
}else{
edit_action(0,strona,hn_element,link_strona,czy_link_nie_w_naglowku);
if(stronasubst_aktualizowanie_nazw_artykulow){
strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona);
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:Ramka|Rozwiń|{{#invoke:StronicowyParser|LiniaArtykułuKsiążki|nazwa przestrzeni nazw=(main)|nazwa jednostki="+strona+"|analiza=tak|wyspecjalizowana=tak}}}}",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_section,function(headline,wikikod,tab_c){
var stare=tab_c[1];var nowe;
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod);
nowe=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod)),true);
stronasubst_tablica_alternatywnych_nazw[stare]=nowe;
return wikikod;
});
}).DodatkiSkryptCatch((error) => {}));
}
}
return Promise.DodatkiSkryptAll(tab_promise);
};
(function(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i){
tab_fun.push(function(){
return $(document).DodatkiSkryptSettledPromise(function(){
return PraceIteracyjne(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i);
});
});
})(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i);
/**/
tabs[i]=link_strona;
var czy=false;
for(var d in titles){
if(titles[d]==link_strona){
czy=true;
break;
}
}
if(!czy){
titles[titles.length]=link_strona;
}
if(tabstrona[link_strona]==null){
tabstrona[link_strona]=new Array();
}
var tab=tabstrona[link_strona];
var tablen=tab.length;
tabstrona[link_strona][tablen]=element;
}
/**/
var PraceNaglowki=function(){
var tab_promise=new Array();
if(element_strony==document){
var namespace=DodatkiSkrypt.Info.page.namespace;
var strona_podrecznika=((namespace!="")?(namespace+":"):"")+DodatkiSkrypt.Info.page.bookname;
}else{
var zaan=$(element_strony).parents('.rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .szablon_subst_js.szablon_subst_js_zanalizowany');
if((zaan!==null)&&(zaan.length>0)){
var strona=zaan[0].getAttribute('nazwa_strony');
if(strona){
var strona_podrecznika=DodatkiSkrypt.Nazwy.FULLBOOKNAME(strona);
}else{
var strona_podrecznika=DodatkiSkrypt.Nazwy.FULLBOOKNAME(aktualna_strona);
}
}else{
var strona_podrecznika=DodatkiSkrypt.Nazwy.FULLBOOKNAME(aktualna_strona);
}
}
strona_podrecznika=strona_podrecznika.replace(/[\s]+/g,"_");
strona_podrecznika=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona_podrecznika);
//var tab_promise=new Array();
var tab_klasa_ksiazki=new Array();
var klasa_ksiazki_1=$(element_strony).filter('.klasa_książki');
if(klasa_ksiazki_1.length>0){tab_klasa_ksiazki.push(klasa_ksiazki_1);}
var klasa_ksiazki_2=$(element_strony).find('.klasa_książki');
if(klasa_ksiazki_2.length>0){tab_klasa_ksiazki.push(klasa_ksiazki_2);}
var klasa_ksiazki=$(tab_klasa_ksiazki);
if(klasa_ksiazki.length>0){
var tab_naglowka=new Array();
var tab_hn=new Array();
for(var z=0;z<klasa_ksiazki.length;++z){
var pojedyncza_klasa_ksiazki=klasa_ksiazki[z];
var CzyOdrzucic=function(){
var potomek_analizowany=$(element_strony).find(".rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .szablon_subst_js.szablon_subst_js_zanalizowany").find(pojedyncza_klasa_ksiazki);
if(potomek_analizowany.length>0){return true;};
return false;
}
if(CzyOdrzucic()){continue;}
var dana_klasa_naglowka=$(pojedyncza_klasa_ksiazki).children('.klasa_nagłówka').children('.mw-heading').children(hn).not(toc_h);
if($(dana_klasa_naglowka).length>0){
$(dana_klasa_naglowka).DodatkiSkryptEach(function(g,element){
var naglowek=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(element).html())));
naglowek=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(naglowek);
var ww=1;
for(var x=0;x<tab_naglowka.length;++x){
if(tab_naglowka[x]==naglowek){
++ww;
}
}
naglowek=naglowek+((ww>1)?("_"+ww):"");
tab_naglowka[g]=naglowek;
tab_hn[g]=element;
if($(element).parent().parent().parent().hasClass('klasa_książki')){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|KtóraSekcjaStrony|"+strona_podrecznika+"|"+naglowek+"}}",aktualna_strona,null,true,g,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
//var muteks=new DodatkiSkrypt.Muteks();
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var wikikod=data.parse.text['*'];
var c=data.parse.text.number;
var nazwa_podrecznika=strona_podrecznika.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ")
var naglowek_sekcji_podrecznika=tab_naglowka[c].replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ")
edit_action(parseInt(wikikod),nazwa_podrecznika,tab_hn[c],nazwa_podrecznika+"#"+naglowek_sekcji_podrecznika,true);
},null,muteks_wolumin);
}).DodatkiSkryptCatch((error) => {}));
if(stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|ZwróćSekcjęNagłówkaStrony|"+strona_podrecznika+"|"+naglowek+"}}",aktualna_strona,null,true,g,null,null,null,null,stronasubst_zapisz_dane_na_kliencie)
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_hn,function(headline,wikikod,tab_c){
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod,function(wikikod){
wikikod=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod));
return wikikod;
});
return wikikod;
});
}).DodatkiSkryptCatch((error) => {}));
}
}
//++g;
});
}
}
}
return Promise.DodatkiSkryptAll(tab_promise);
}
tab_fun.push(function(){
return $(document).DodatkiSkryptSettledPromise(function(){
return PraceNaglowki();
});
});
/**/
var RozwazajNaglowki=function(){
var toc_fun=new DodatkiSkrypt.Strona.ListaNodeTOC(element_strony);
if((toc_fun.toc!==null)&&(toc_fun.toc.length>0)){
for(var w=0;w<toc_fun.toc.length;++w){
var czy_side_bar_toc=toc_fun.CzySideBarToc(toc_fun.toc[w]);
var ile_jest=0;
var li=$(toc_fun.toc[w]).find('li');
if((li!==null)&&(li.length>0)){
for(var dd=0;dd<li.length;++dd){
var element_li=li[dd];
var tocnumber;var toctext_wartosc;
if(czy_side_bar_toc){
tocnumber=$(element_li).find('.vector-toc-numb').first()[0];
if(!tocnumber){continue;}
toctext_wartosc=$(element_li).find('.vector-toc-text').first().html().replace(new RegExp(DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(tocnumber.outerHTML),"g"),"");
}else{
tocnumber=$(element_li).find('.tocnumber').first()[0];
toctext_wartosc=$(element_li).find('.toctext').first().html();
}
if((tocnumber)&&(toctext_wartosc)){
var czy_jest=undefined;
var klasa_naglowka=$(element_strony).find('.klasa_nagłówka');
if((klasa_naglowka)&&(klasa_naglowka.length>0)&&(klasa_naglowka[ile_jest])){
var element_klasa_naglowka=klasa_naglowka[ile_jest];
var headline=$(element_klasa_naglowka).find(hn).not(toc_h).first()[0];
if((headline)
&&(headline.tagName.toUpperCase().match(/^H\d+$/))
&&(headline.parentNode!=null)
&&(headline.parentNode.tagName.toUpperCase()=="DIV")
&&($(headline).closest('.mw-heading').parent()[0]===element_klasa_naglowka)
){
var element_a;
if(czy_side_bar_toc){
element_a=$(tocnumber).parent().parent().get(0);
}else{
element_a=$(tocnumber).parent().get(0);
}
if(element_a.tagName.toUpperCase()=="A"){
var href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(element_a.getAttribute('href'));
if(href!==null){
href=DodatkiSkrypt.Szereg.Napis.PoprawianieNazwyIdLubHref(href,true);
var id_headline=$(headline).attr('id');
if(id_headline!==null){
id_headline=DodatkiSkrypt.Szereg.Napis.PoprawianieNazwyIdLubHref(id_headline);
if(href!=id_headline){czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
if(czy_jest===undefined){ile_jest+=1;}
if((czy_jest===undefined)||(!czy_jest)){
var element_toctext=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(toctext_wartosc)).replace(/<[^<>]+>/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ");
if(stronasubst_tablica_rozdzialow[element_toctext]==null){
stronasubst_tablica_rozdzialow[element_toctext]=new Array(tocnumber);
}else{
stronasubst_tablica_rozdzialow[element_toctext].push(tocnumber);
}
}
}
}
}
}
}
}
/**/
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return RozwazajNaglowki();
},null,muteks_stronasubst));
/**/
var Strona=function(strona){
var strona_re=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(strona);
var re=new RegExp("^\\s*"+strona_re+"\\s*#","g");
return re;
}
var CzyArtykulyZNaglowkamiDlaStrony=function(re){
for(var s in titles){
var czy_hash=titles[s].match(re);
if(czy_hash){
return true;
}
}
return false;
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var toc_fun=new DodatkiSkrypt.Strona.ListaNodeTOC(element_strony);
DodatkiSkrypt.Strona.UstawParametryUstawienioweTOC(toc_fun.toc,stronasubst_ukrywaj_toc,stronasubst_mathml);
},null,muteks_stronasubst));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab_promise=new Array();
for ( var t in titles ) {
var strona=titles[t].match(/^[^#]*/g).toString();
var szablon_artykulu;
var re_strona=Strona(strona);
var czy_naglowki=CzyArtykulyZNaglowkamiDlaStrony(re_strona);
if(!czy_naglowki){
strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona);
szablon_artykulu="{{:"+strona+"}}";
}else{
/*---------------------------------*/
var rozdzial1=null;
var re=/^([^#]*)#(.*)$/g;
if(re.test(titles[t])){
rozdzial1=titles[t].replace(re,"$2");
rozdzial1=rozdzial1.replace(/&/g,"&").replace(/ /g," ").replace(/<i>/g,"''").replace(/<\/i>/g,"''").replace(/<b>/g,"'''").replace(/<\/b>/g,"'''");
rozdzial1=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(rozdzial1);
}else{rozdzial1="";}
var rozdzial2=null;
var tit=titles[parseInt(t)+1];
if( tit && re.test(tit) && re_strona.test(tit)){
rozdzial2=tit.replace(re,"$2");
rozdzial2=rozdzial2.replace(/&/g,"&").replace(/ /g," ").replace(/<i>/g,"''").replace(/<\/i>/g,"''").replace(/<b>/g,"'''").replace(/<\/b>/g,"'''");
rozdzial2=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(rozdzial2);
}else{rozdzial2="";}
/*-- -------------------------*/
szablon_artykulu="{{#invoke:Ramka|Rozwiń|{{#invoke:StronicowyParser|TekstRozdziałuStrony|"+strona+"|"+rozdzial1+"|"+rozdzial2+"}}}}";
}
//szablon_artykulu="{{PrzytnijTekst|"+szablon_artykulu+"}}";
//if(stronasubst_opakuj_kategorie_ze_sortowaniem){
// szablon_artykulu="{{OpakujKategorieZeSortowaniem|"+szablon_artykulu+"}}";
//}
(function(szablon_artykulu,strona,t){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(szablon_artykulu,strona,null,true,t,stronasubst_opakuj_kategorie_ze_sortowaniem,stronasubst_przytnij_tekst,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(
promise.DodatkiSkryptThen(function(data){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
return WikikodTitle(data,tabs,titles,tabstrona,muteks,tablica_przednaglowkowa_html,stronasubst_latex,stronasubst_mathml);
},null,muteks_wolumin);
}).DodatkiSkryptCatch(function(data){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var strona_hash=titles[t];
var elements=tabstrona[strona_hash];
var muteks=new DodatkiSkrypt.Muteks();
return NiePobranaStronaLubNieIstnieje(strona,strona_hash,elements,muteks);
},null,muteks_wolumin);
}));
})(szablon_artykulu,strona,t);
}
tab_fun.forEach(function(element_fun){
tab_promise.push($(document).DodatkiSkryptSetTimeOut(function(){
return element_fun();
},0));
})
return Promise.DodatkiSkryptAll(tab_promise);
},null,muteks_stronasubst));
return Promise.DodatkiSkryptAll(tab_promise);
}
//this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod,)
this.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera=function(wikikod,funkcja1,funkcja2){
if(!stronasubst_nie_usuwaj_styli){
wikikod=DodatkiSkrypt.Szereg.Styl.PrzeniesienieStyloweHTMLNaStartStronyParsera(wikikod);
wikikod=funkcja1?funkcja1(wikikod):wikikod;
}else{
wikikod=DodatkiSkrypt.Szereg.Styl.EwentualneUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod);
wikikod=funkcja2?funkcja2(wikikod):wikikod;
}
return wikikod;
}
this.NaprawianieNapisuWprowadzeniaTekstuStrony=function(){
if(stronasubst_naprawiaj_naglowki){
DodatkiSkrypt.Strona.NaprawianieNapisuWprowadzeniaTekstu();
}
}
this.UruchomBiegUruchamaniaStrony=function(){
if(!stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.ProgressStrony.UstawianieWidokuEwolucji();
}
}
this.AnalizujDalejSzablonSubst=function(element_strony_szablonu,muteks_szablon,strona_hash){
element_strony_szablonu=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element_strony_szablonu);
var tab_promise=new Array();
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](SzablonSubst,new Array("szablony")).DodatkiSkryptThen(function(){
return SzablonSubst.szablony.PobierzSzablon(element_strony_szablonu,undefined,undefined,strona_hash);
});
},null,muteks_szablon));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var rodzic_szablon_subst_js_szablonu=DodatkiSkrypt.Scribunto.StronicowyParser.PoliczPodAleNiePodPodRodzica(element_strony_szablonu,true);
if($(rodzic_szablon_subst_js_szablonu).length>0){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Nawigacja.createCollapseButtons(rodzic_szablon_subst_js_szablonu);
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Nawigacja.createNavigationBarToggleButton(rodzic_szablon_subst_js_szablonu);
},null,muteks));
}
return Promise.DodatkiSkryptAll(tab_promise);
},null,muteks_szablon));
var promise=tab_promise.at(0);
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return promise.DodatkiSkryptThen(function(element_strony){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var rodzic_szablon_subst_js=DodatkiSkrypt.Scribunto.StronicowyParser.ElementyOpakowaniaSzablonSubst(element_strony,true);
$(rodzic_szablon_subst_js).DodatkiSkryptEach(function(i,element){
this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(element);
var nazwa_strony=$(element).attr('nazwa_strony');
/**/
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var toc_fun=new DodatkiSkrypt.Strona.ListaNodeTOC(element);
DodatkiSkrypt.Strona.UstawParametryUstawienioweTOC(toc_fun.toc,stronasubst_ukrywaj_toc,stronasubst_mathml);
},null,muteks));
/**/
if(nazwa_strony){
var strona_start_parent=new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode(element);
if(
(strona_start_parent.CzyElementRodzicJestStronaStart())
&&((new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode()).CzyTenElementMaStronaStartToc(element))
){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
var strona_start_rodzic=strona_start_parent.ElementKontenerowyStronaStart();
var strona_start_rodzic_node=$(strona_start_rodzic).get(0);
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(new Array(strona_start_rodzic_node),new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
},null,muteks));
}else{
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
DodatkiSkrypt.Strona.TworzenieSpisuRzeczyVectorStickyTOC();
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(undefined,new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
/**/
DodatkiSkrypt.Strona.AktualizacjaZdarzeniowaMenowaWektorowaBudowyStrony();
},null,muteks));
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var str_strona_start_dziecko=$(element).find('.strona_start');
if($(str_strona_start_dziecko).length>0){
for(var strona_start_dziecko of $(str_strona_start_dziecko)){
var strona_start_dziecko_filtr=new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode(strona_start_dziecko);
if(
(strona_start_dziecko_filtr.CzyElementRodzicJestStronaStart())
&&((new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode()).CzyTenElementMaStronaStartToc(strona_start_dziecko))
){
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
var strona_start_dziecko_node=strona_start_dziecko_filtr.ElementKontenerowyStronaStart().get(0);
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(new Array(strona_start_dziecko_node),new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
}
}
}
},null,muteks));
///tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// DodatkiSkrypt.Strona.OdkywanieSpisuMateriiTOC();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Boksy.StickyXY();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
//return DodatkiSkrypt.Boksy.NotOverflowXY();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
/// return DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
//},null,muteks));
}else{
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
},null,muteks));
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.Strona.QuizIframe(element,nazwa_strony||DodatkiSkrypt.Info.page.fullname);
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab_promise=new Array();
var fullname=((nazwa_strony)?(nazwa_strony):(DodatkiSkrypt.Info.page.fullname));
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
return this_zmienna.CzyStronaSubst(element,fullname,true,muteks,true);
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
return this_zmienna.ZbiorczaStrona(element,fullname,muteks,true,this_zmienna.CzyStronaSubst);
},null,muteks));
return Promise.DodatkiSkryptAll(tab_promise);
},null,muteks));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_szablon));
return Promise.DodatkiSkryptAll(tab_promise);
}
this.KompleksoweAktualizowanieSpisuMateriiStrony=function(nazwa_strony){
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(undefined,new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
return DodatkiSkrypt.Strona.AktualizacjaZdarzeniowaMenowaWektorowaBudowyStrony().DodatkiSkryptThen(function(){
/**/
var strona_start=DodatkiSkrypt.Szereg.Styl.ElementRodzic('.strona_start .ciało_strona');
if(strona_start.length>0){
for(var str_strona_start of strona_start){
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(new Array(str_strona_start),new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
}
}
});
}
this.CzyStronaSubst=function(element,aktualna_strona,czy_szablon_subst,muteks_szablon, czy_nie_koniec){
element=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element);
var promise=DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
var tab_promise=new Array();
if((wikikod)||(czy_szablon_subst)){
if(stronasubst_numerowanie_poszczegolnych_rozdzialow){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](NumerSubst,new Array("numer")).DodatkiSkryptThen(function(){
var artykul=DodatkiSkrypt.Nazwy.ARTICLENAME(aktualna_strona);
return NumerSubst.numer.NumerujRozdzialyArtykulu(element,artykul,aktualna_strona);
});
},null,muteks_szablon));
};
if(stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks,aktualna_strona));
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks,aktualna_strona));
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_szablon));
}
}
if(!czy_nie_koniec){
return Promise.DodatkiSkryptAll(tab_promise).DodatkiSkryptThen(function(){
if(wikikod){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks_szablon=new DodatkiSkrypt.Muteks();
return StronaSubstAnaliza(element,wikikod,aktualna_strona,muteks_szablon);
},null,muteks_szablon);
};
});
}
});
return promise;
}
this.ZbiorczaStrona=function(id_numerowanie,aktualna_strona,muteks,czy_tak_function,__function){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var funkcja=function(){
id_numerowanie=DodatkiSkrypt.Szereg.Styl.ElementRodzic(id_numerowanie);
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,id_numerowanie).DodatkiSkryptThen(function(data){
if((data)&&(data!=="")){
DodatkiSkrypt.ProgressStrony.UstawianieWidokuEwolucji();
}
}).DodatkiSkryptThen(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
$(id_numerowanie).DodatkiSkryptEach(function(i,id_element){
var tab_elements=new Array();
$(id_element).find(".rozdział_książki").DodatkiSkryptEach(function(i,element){
var str_rozdzial=$(id_element).find('.klasa_książki').children('.klasa_nagłówka').children(element);
if(str_rozdzial.length==0){
var parent=$(element).get(0);
if((parent)&&(($(tab_elements).filter(parent).length==0)/*||($(tabs).find(parent).length==0)*/)){
tab_elements.push(parent);
}
}
});
var str_element=$(id_element).find('.klasa_książki');
if(str_element.length>0){
str_element.DodatkiSkryptEach(function(i,element){
tab_elements.push(element);
});
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
var tab_str=$(tab_elements);
if(tab_str.length>0){
return __function(tab_str,aktualna_strona,czy_tak_function,muteks);
}
},null,muteks));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
}
if(stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
var muteks=new DodatkiSkrypt.PustyMuteks();
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
},null,muteks);
}
});
}else{
return funkcja();
}
},null,muteks);
}
};
KategorieSubst.KategorieSubst=function(){
var gadget_uruchom_obsluge_kategorie;
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_kategoriesubst){
czy_nie_gconfig_kategoriesubst=true;
mw.messages.set({
'KategorieSubst-name': 'Obsługa kategorii',
'KategorieSubst-description-page': 'Wikibooks:StronicowyParser',
'KategorieSubst-uruchom-kategorie': 'Uruchom dodatkową obsługę kategorii.',
});
gConfig.register('KategorieSubst', {name: mw.msg('KategorieSubst-name'), descriptionPage: mw.msg('KategorieSubst-description-page')}, [
{
name: 'uruchom-kategorie',
desc: mw.msg('KategorieSubst-uruchom-kategorie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_KategorieSubst-uruchom-kategorie']
}]);
gadget_uruchom_obsluge_kategorie=(gConfig.get('KategorieSubst', 'uruchom-kategorie')==true);
}
}
gadget_uruchom_obsluge_kategorie=(gadget_uruchom_obsluge_kategorie!==undefined)?gadget_uruchom_obsluge_kategorie:false;
var tabela_sortkey_promise=undefined;
var this_zmienna=this;
var tab_kategorie_strony_pliki={0:'subcat',1:'page',2:'file',};
var TworzenieTablicyTytułowejNazwSortowaniaStron=function(fullname,jakie_pozycje_kategorii){
var params = {
action: 'query',
list: 'categorymembers',
cmtitle: fullname,
cmlimit: 5000,
cmprop: 'title|sortkeyprefix',
cmtype: tab_kategorie_strony_pliki[jakie_pozycje_kategorii],
format: 'json',
smaxage: 600,
maxage: 600,
};
return DodatkiSkrypt.api.ZadaniaApi(params).DodatkiSkryptThen(function(data){
var tab=new Array();
var category = data.query.categorymembers;
for(var cat in category){
var categorymembers=category[cat];
var title=categorymembers.title;
var sortkey=categorymembers.sortkeyprefix;
tab[DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(title)]=sortkey;
}
return tab;
}).DodatkiSkryptCatch(function(error){return Promise.reject(error);});
}
var PobierzInformacjePlikowe=function(plik){
var params={
action: 'query',
format: 'json',
prop: 'imageinfo',
iiprop: 'url|size',
iiurlwidth: 85,
titles: plik,
smaxage: 600,
maxage: 600,
};
return DodatkiSkrypt.api.ZadaniaApi(params).DodatkiSkryptThen(function(data){
var pages=data.query.pages;
for(var p in pages){
var imageinfo=pages[p].imageinfo[0];
var width=imageinfo.width;
var height=imageinfo.height;
var size=imageinfo.size;
var url=((imageinfo.thumburl)?(imageinfo.thumburl.replace(/^[Hh][Tt][Tt][Pp][Ss]?:\/\//g,"//")):(imageinfo.url.replace(/^[Hh][Tt][Tt][Pp][Ss]?:\/\//g,"//")));
if(size/1024<1){
var size_new=size+" B";
}else if(size/1024<1024){
var size_new=parseInt(size/1024*100)/100+" KB";
}else if(size/1024/1024<1024){
var size_new=Math.round(size/1024/1024*100)/100+" MB";
}else if(size/1024/1024/1024<1024){
var size_new=Math.round(size/1024/1024/1024*100)/100+" GB";
}else{
var size_new=size+" B";
}
return Promise.resolve([width,height,size_new,url])
}
return Promise.reject(data);
}).DodatkiSkryptCatch(function(error){return Promise.reject(error);});
}
var IleStronKategoriiPlikowJestWDanejKategorii=function(fullname){
var params={
action: 'query',
format: 'json',
titles: fullname,
prop: 'categoryinfo'
};
return DodatkiSkrypt.api.ZadaniaApi(params).DodatkiSkryptThen(function(data){
if((data)&&(data.query)&&(data.query.pages)){
var pages = data.query.pages;
for (page in pages){
var categoryinfo=pages[page].categoryinfo;
if(categoryinfo){
return Promise.resolve([categoryinfo.subcats||0,categoryinfo.pages||0,categoryinfo.files||0]);
}
}
}
return Promise.resolve([0,0,0]);
}).DodatkiSkryptCatch(function(error){return Promise.reject(error);});
}
var IleJestKategoriiStronIPlikowWKategorii=function(href,__function){
var promise_kategorie_ustawienia=DodatkiSkrypt.DodatkiSkryptUserOption.get(href,"CzłonkowieKategorii:");
return promise_kategorie_ustawienia.DodatkiSkryptThen(function(data_ustawienia){
if(!data_ustawienia){return;}
var promise_kategorie=IleStronKategoriiPlikowJestWDanejKategorii(href);
return promise_kategorie.DodatkiSkryptThen(function(data_faktycznie){
var ile_kategorii=data_faktycznie[0];var ile_stron=data_faktycznie[1];var ile_plikow=data_faktycznie[2];
var tab_strony=data_ustawienia.split("||");
for(var i=0;i<tab_strony.length;++i){
var strona;var sortkey;var numer_porzadku;var przestrzen;var nazwa;
var strona_sort=tab_strony[i];
var tab_strona_sort=strona_sort.split("|");
var kategoria_strona_plik=tab_strona_sort[0];
var czy_kategoria=/^[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]:/g.test(kategoria_strona_plik);
if(czy_kategoria){
++ile_kategorii;
}else{
var czy_plik=/^[Pp][Ll][Ii][Kk]:/g.test(kategoria_strona_plik);
if(czy_plik){
++ile_plikow;
}else{
++ile_stron;
}
}
}
return __function(ile_kategorii,ile_stron,ile_plikow)
});
});
}
var WstawPozycjeNaStronieKategoriiWedleDanychStron=function(fullname,numer_porzadku,wezel,przestrzen,pozycja,nazwa,czy_zagniezdzone,media,kategorie){
if(!tabela_sortkey_promise){tabela_sortkey_promise=new Array();};
if(!tabela_sortkey_promise[fullname]){tabela_sortkey_promise[fullname]=new Array();};
tabela_sortkey_promise[fullname][numer_porzadku]=(!tabela_sortkey_promise[fullname][numer_porzadku])?(TworzenieTablicyTytułowejNazwSortowaniaStron(DodatkiSkrypt.Info.page.fullname,0)):tabela_sortkey_promise[fullname][numer_porzadku];
return tabela_sortkey_promise[fullname][numer_porzadku].DodatkiSkryptThen(function(tabela_sortkey){
if(!czy_zagniezdzone){
if(numer_porzadku!=2){
var category_a=$(wezel).find('> ul:last-child > li').find(' > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeBullet + bdi > a, > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeEmptyBullet + bdi > a');
}else{
var category_a=$(media||kategorie).find(' > ul.gallery > li.gallerybox > div.gallerytext > a.galleryfilename');
}
}else{
var category_a=$(wezel).find(' > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeBullet + bdi > a, > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeEmptyBullet + bdi > a');
}
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var czy_koniec=false;
for(var p=0;p<category_a.length;++p){
var element_a=category_a[p];
var pozycja_a=element_a.innerHTML;
if(pozycja_a==pozycja){
if(!czy_zagniezdzone){
var li=$(element_a).closest('li');
}else{
var li=$(element_a).closest('div.CategoryTreeSection');
}
$(li).remove();
}
}
for(var p=0;p<=category_a.length;++p){
(function(p,category_a){
if(numer_porzadku==0){
if(category_a.length==0){
var modul1=(!czy_zagniezdzone)?DodatkiSkrypt.UruchomPobranePliki('ext.categoryTree.styles'):null;
var modul2=(!czy_zagniezdzone)?DodatkiSkrypt.UruchomPobranePliki('ext.categoryTree'):null;
}
}else if(numer_porzadku==2){
var modul1=(!czy_zagniezdzone)?DodatkiSkrypt.UruchomPobranePliki('mediawiki.page.gallery.styles'):null;
var modul2=null;//=DodatkiSkrypt.UruchomPobranePliki('mmv');
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
if(czy_koniec){return;}
var category_li;
var promise_strony=Promise.all([null,null,modul1,modul2]);
if(p<category_a.length){
var element_a=category_a[p];
var pozycja_a=element_a.innerHTML;
if(numer_porzadku==1){
var promise_przestrzen=DodatkiSkrypt.Scribunto.Nazwy.NAZWAPRZESTRZENI(pozycja_a);
var promise_nazwa=DodatkiSkrypt.Scribunto.Nazwy.NAZWASTRONY(pozycja_a);
}else{
var promise_przestrzen=Promise.resolve("");
var promise_nazwa=Promise.resolve(pozycja_a);
}
promise_strony=Promise.all([promise_przestrzen,promise_nazwa,modul1,modul2]).DodatkiSkryptThen(function(data){
var przestrzen_strony=data[0];var nazwa_strony=data[1];
var nazwa_a=(tabela_sortkey[(((numer_porzadku==0)||(numer_porzadku==2))?(przestrzen+":"):"")+pozycja_a]||"")+nazwa_strony+((numer_porzadku==1 )?przestrzen_strony:(""));
var tabs=(new Array(nazwa,nazwa_a)).sort();
if(nazwa==tabs[0]){
category_li=$(element_a).closest((!czy_zagniezdzone)?('li'):('div.CategoryTreeSection'));
}
return Promise.resolve(data);
});
}
return promise_strony.DodatkiSkryptThen(function(data){
var przestrzen_strony=data[0];var nazwa_strony=data[1];
if((category_a.length==p)||(category_li)){
var element_wezla;
var strona=(((przestrzen)&&(przestrzen!=""))?(przestrzen+":"):"")+pozycja;
if(numer_porzadku==0){
var promise_wezel=IleStronKategoriiPlikowJestWDanejKategorii(przestrzen+":"+pozycja);
}else{
var promise_wezel=Promise.resolve();
}
return promise_wezel.DodatkiSkryptThen(function(data){
if(numer_porzadku==0){
var ile_kategorii=data[0];var ile_stron=data[1];var ile_plikow=data[2];
var tabela_napis=new Array();
if(ile_kategorii>0){tabela_napis.push(ile_kategorii+" kat.");};
if(ile_plikow){tabela_napis.push(ile_plikow+" str.");};
if(ile_stron>0){tabela_napis.push(ile_stron+" pl.")};
var napis;
if(tabela_napis.length>0){napis=tabela_napis.join(", ");}else{napis="pusta";};
napis="("+napis+")";
var category_tree_section=mw.html.element('div',{'class':'CategoryTreeSection'},
new mw.html.Raw(mw.html.element('div',{'class':'CategoryTreeItem'},
new mw.html.Raw(((tabela_napis.length>0)?(mw.html.element('span',{'class':'CategoryTreeBullet'},
new mw.html.Raw(mw.html.element('a',{'class':'CategoryTreeToggle','data-ct-title':DodatkiSkrypt.Szereg.Kodowanie.EncodeWiki(pozycja),'aria-expanded':"false",'data-ct-state':"collapsed" ,'title':'rozwiń'},"")+" "))):(mw.html.element('span',{'class':'CategoryTreeEmptyBullet'},"")+" "))
+mw.html.element("bdi",{"dir":"ltr"},new mw.html.Raw(mw.html.element('a',{'href':'/wiki/'+strona,'title':strona},pozycja)))+" "
+mw.html.element('span',{'title':'Zawiera '+ile_kategorii+' podkategorii, '+ile_stron+' stron i '+ile_plikow+' plików','dir':'ltr'},napis))
)+mw.html.element('div',{'class':'CategoryTreeChildren','style':'display:none'},"")));
if(!czy_zagniezdzone){
element_wezla=mw.html.element('li',{},new mw.html.Raw(category_tree_section));
}else{
element_wezla=category_tree_section;
}
}else if(numer_porzadku==1){
element_wezla=mw.html.element('li',{},new mw.html.Raw(mw.html.element('a',{'href':"/wiki/"+strona,'title':strona},strona)));
}else{
return PobierzInformacjePlikowe(strona).DodatkiSkryptThen(function(data){
var width=data[0];var height=data[1];size=data[2];url=data[3];
if(width>height){
var new_height=parseInt((height/width)*120);
var src_width=120;
var src_height=new_height;
}else{
var new_width=parseInt((width/height)*120);
src_width=new_width;
src_height=120;
}
element_wezla=mw.html.element('li',{'class':'gallerybox','style':'155px'},new mw.html.Raw(
mw.html.element('div',{'class':'thumb','style':'width:150px;height:150px;'},
new mw.html.Raw(mw.html.element('span',{'typeof':'mw:File'},
new mw.html.Raw(mw.html.element('a',{'class':'"mw-file-description"','href':'/wiki/'+strona},
new mw.html.Raw(mw.html.element('img',
{
'alt':strona,
'src':url,
'decoding':"async",
'loading':'lazy',
'width':src_width,
'height':src_height,
"data-file-width":width,
"data-file-height":height
})))))
))+mw.html.element('div',{'class':'gallerytext'},
new mw.html.Raw(mw.html.element('a',{'class':'galleryfilename galleryfilename-truncate','href':'/wiki/'+strona},pozycja)+width+' × '+height+'; '+size+mw.html.element('br')))
)
);
});
}
}).DodatkiSkryptThen(function(){
if(category_li){
var div=document.createElement('div');
div.innerHTML=element_wezla;
$(category_li[0]).before(div.firstChild);
czy_koniec=true;
}else{
if(category_a.length>0){
var div=document.createElement('div');
div.innerHTML=element_wezla;
var ul=$(category_a).closest((!czy_zagniezdzone)?('ul'):('div.CategoryTreeChildren'));
$(ul).append(div.firstChild);
czy_koniec=true;
}else{
if(!czy_zagniezdzone){
var element_wezla_pustego=mw.html.element('ul',((numer_porzadku==2)?{'class':'gallery mw-gallery-traditional'}:{}),new mw.html.Raw(element_wezla));
}else{
var element_wezla_pustego=element_wezla;
$(wezel).find(' > .CategoryTreeNotice').remove();
}
var div=document.createElement('div');
div.innerHTML=element_wezla_pustego;
if(numer_porzadku!=2){
$(wezel).append(div.firstChild);
}else{
$(kategorie||media).append(div.firstChild);
}
czy_koniec=true;
}
}
});
}
});
},null,muteks));
})(p,category_a);
}
return Promise.all(tab_promise);
})
}
this.DodawanieDoStrukturyKategoriiInneStronyZerowegoStopniaRozbudowy=function(pozycja,przestrzen,sortkey){
var ns_14=$('body.ns-14');
if(ns_14.length>0){
var tab={"Kategoria":0,"Plik":2,};
var numer_porzadku=(tab[przestrzen]!=undefined)?tab[przestrzen]:1;
pozycja=pozycja.charAt(0).toUpperCase()+pozycja.slice(1);
var id=((numer_porzadku==0)?('mw-subcategories'):((numer_porzadku==2)?('mw-category-media'):('mw-pages')));
var element_category_generated=$(DodatkiSkrypt.Szereg.IdCSS(3)).first()[0];
var pagename=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(DodatkiSkrypt.Info.page.pagename);
if(!element_category_generated){
element_category_generated=mw.html.element('div',{'class':'mw-category-generated','lang':'pl','dir':'ltr'},
new mw.html.Raw(mw.html.element('div',{'id':id,},
new mw.html.Raw(mw.html.element('h2',{},((numer_porzadku==0)?("Podkategorie"):((numer_porzadku==1)?("Strony w kategorii „"+pagename+"”"):("Pliki w kategorii „"+pagename+"”"))))+mw.html.element('p',{},((numer_porzadku==0)?("Poniżej wyświetlono 0 spośród wszystkich 0 podkategorii tej kategorii."):((numer_porzadku==1)?("Poniżej wyświetlono 0 spośród wszystkich 0 stron tej kategorii."):("Poniżej wyświetlono 0 spośród wszystkich 0 plików w tej kategorii. "))))+((numer_porzadku<2)?(mw.html.element('div',{'class':'mw-content-ltr','lang':'pl','dir':'ltr',},new mw.html.Raw(mw.html.element('div',{'class':'mw-category'},"")))):(""))))
)
);
var element_div=document.createElement('div');
element_div.innerHTML=element_category_generated;
var mw_content_text=document.querySelector(DodatkiSkrypt.Szereg.IdCSS(2));
var element=$(DodatkiSkrypt.Szereg.IdCSS(2)).find('> .mw-parser-output + :not(.mw-parser-output)').first()[0];
if(element){
element_category_generated=$(element).DodatkiSkryptBefore(element_div.firstChild)[0];
}else{
element_category_generated=$(mw_content_text).DodatkiSkryptAppend(element_div.firstChild)[0];
}
}else{
var sub=$(element_category_generated).children('p:only-child');
$(sub).remove();
var subcategories=$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #mw-subcategories').first()[0];
var pages=$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #mw-pages').first()[0];
var media=$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #mw-category-media').first()[0];
var kategorie=((numer_porzadku==0)?(subcategories):((numer_porzadku==1)?(pages):(media)));
if(!kategorie){
var kategorie=mw.html.element('div',{'id':id,},
new mw.html.Raw(mw.html.element('h2',{},((numer_porzadku==0)?("Podkategorie"):((numer_porzadku==1)?("Strony w kategorii „"+pagename+"”"):("Pliki w kategorii „"+pagename+"”"))))+mw.html.element('p',{},((numer_porzadku==0)?("Poniżej wyświetlono 0 spośród wszystkich 0 podkategorii tej kategorii."):((numer_porzadku==1)?("Poniżej wyświetlono 0 spośród wszystkich 0 stron tej kategorii."):("Poniżej wyświetlono 0 spośród wszystkich 0 plików w tej kategorii."))))+((numer_porzadku<2)?(mw.html.element('div',{'class':'mw-content-ltr','lang':'pl','dir':'ltr',},new mw.html.Raw(mw.html.element('div',{'class':'mw-category'},"")))):(""))));
var element_div=document.createElement('div');
element_div.innerHTML=kategorie;
if(numer_porzadku==0){
var node_firstchild=element_category_generated.firstChild;
if(node_firstchild){
kategorie=$(element_category_generated.firstChild).DodatkiSkryptBefore(element_div.firstChild);
}else{
kategorie=$(element_category_generated).DodatkiSkryptAppend(element_div.firstChild);
}
}else if(numer_porzadku==1){
if(media){
kategorie=$(media).DodatkiSkryptBefore(element_div.firstChild);
}else{
kategorie=$(element_category_generated).DodatkiSkryptAppend(element_div.firstChild);
}
}else{
kategorie=$(element_category_generated).DodatkiSkryptAppend(element_div.firstChild);
}
}
}
$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #'+id+' > p').first().DodatkiSkryptEach(function(i,element){
element.innerHTML=element.innerHTML.replace(/^([^\d]+)(\d+)([^\d]+)(\d+)([^\d]+)$/g,function(a,p1,l1,p2,l2,p3){
return p1+(parseInt(l1)+1)+p2+(parseInt(l2)+1)+p3;
})
})
var nazwa=sortkey+pozycja;
var wezel;
if(numer_porzadku!=2){
var alfabet=(new Array("A","Ą","B","C","Ć","D","E","Ę","F","G","H","I","J","K","L","Ł","M","N","Ń","O","Ó","P","Q","R","S","Ś","T","U","V","W","X","Y","Z","Ź","Ż")).sort().join("");
var pierwsza_litera=nazwa.charAt(0).toUpperCase();
var pozycja_litera=undefined;
var category_group_div=$(element_category_generated).find('> #'+id+' > *:last-child > .mw-category > .mw-category-group');
if(category_group_div.length>0){
var category_group_h3=$(category_group_div).find('> h3');
for(var i=0;i<category_group_h3.length;++i){
var element=category_group_h3[i];
var litera=element.innerHTML;
if(litera==pierwsza_litera){
pozycja_litera=litera;
break;
}
}
}
(function(pierwsza_litera){
for(var p=0;p<=category_group_div.length;++p){
if(p<category_group_div.length){
var h3=$(category_group_div[p]).find('> h3')[0];
var h3_tekst=h3.innerHTML;
for(var i=0;i<alfabet.length;++i){
var litera=alfabet.charAt(i);
var tabs=(new Array(litera,pierwsza_litera)).sort();
if(((!pozycja_litera)&&(litera==tabs[1]))||(pozycja_litera)&&(litera==pierwsza_litera)){
var tabs=(new Array(h3_tekst,pierwsza_litera)).sort();
if((!pozycja_litera)&&(pierwsza_litera==tabs[0])){
var element_wezel=category_group_div[p];
var __wezel=mw.html.element('div',{'class':'mw-category-group',},new mw.html.Raw(mw.html.element('h3',{'class':'is-only-whitespace'},litera)));
wezel=document.createElement('div');
wezel.innerHTML=__wezel;
if(element_wezel){
wezel=$(element_wezel).DodatkiSkryptBefore(wezel.firstChild);
return;
}else{
wezel=$(h3).parent().DodatkiSkryptAppend(wezel.firstChild);
return;
}
}else if((pozycja_litera)&&(h3_tekst==pierwsza_litera)){
wezel=$(category_group_div[p]);
return;
}
}
}
}else{
var pierwsza_litera=nazwa.charAt(0).toUpperCase();
var __wezel=mw.html.element('div',{'class':'mw-category-group',},new mw.html.Raw(mw.html.element('h3',{'class':'is-only-whitespace'},pierwsza_litera)));
wezel=document.createElement('div');
wezel.innerHTML=__wezel;
var category_group_all=$(element_category_generated).find('> #'+id+' > *:last-child > .mw-category').first()[0];
wezel=$(category_group_all).DodatkiSkryptAppend(wezel.firstChild);
return;
}
}
})(pierwsza_litera);
}
/**/;
return WstawPozycjeNaStronieKategoriiWedleDanychStron(DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(DodatkiSkrypt.Info.page.fullname),numer_porzadku,wezel,przestrzen,pozycja,nazwa,false,media,kategorie);
};
}
this.AktualizowanieInformacjiOKategoriiNaStronieKategoriowej=function(item){
var categoryTreebullet=((item==null)?$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories > * > .mw-category > .mw-category-group > ul > li > .CategoryTreeSection > .CategoryTreeItem'))):$(item).siblings('.CategoryTreeChildren').children(".CategoryTreeSection").children(".CategoryTreeItem"));
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var czy_modyfikacje_kategorii=false;
for(var i=0;i<categoryTreebullet.length;++i){
(function(i,categoryTreebullet){
var element=categoryTreebullet[i];
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var element_a0=$(element).find('a').first();
var element_a=$(element).find('a').not('.CategoryTreeToggle').first();
var href=$(element_a).attr('href');
href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href,true);
var href=href.replace(/^\/wiki\//g,"");
return IleJestKategoriiStronIPlikowWKategorii(href,function(ile_kategorii,ile_stron,ile_plikow){
if(ile_kategorii>0){
var str=$(element).siblings('.CategoryTreeChildren');
var display=window.getComputedStyle(str[0], null).getPropertyValue("display");
var str_kategoria=mw.html.element('span',{'class':'CategoryTreeBullet'},
new mw.html.Raw(mw.html.element('a',{'class':'CategoryTreeToggle','data-ct-title':href.replace(/^[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]:/g,"").replace(/[\s_]+/g,"_"),'aria-expanded':((display!="none")?"true":"false"),'title':((display!="none")?'zwiń':"rozwiń")},new mw.html.Raw(""))+" "));
}else{
var str_kategoria=mw.html.element('span',{'class':'CategoryTreeEmptyBullet'},"")
}
var span_full=$(element_a).closest('.CategoryTreeItem').find('span').first();
if((span_full!==null)&&(span_full.length>0)){
var str=$(span_full).parent();
var id=$(str).find('.CategoryTreeToggle');
var data=$(id).data("ct-loaded");
var aktualizacja=$(id).data("ct-aktualizacja");
span_full[0].outerHTML=str_kategoria;
var id=$(str).find('.CategoryTreeToggle');
$(id).data("ct-loaded",data);
$(id).data("ct-aktualizacja",((data)?true:aktualizacja));
}
var dzieci=$(element).children();
if(dzieci.length>2){
var span_ile=dzieci.last();
$(span_ile).attr({'title':"Zawiera "+ile_kategorii+" podkategorie, "+ile_stron+" stron i "+ile_plikow+" plików",'dir':'ltr'});
if(parseInt(ile_kategorii)+parseInt(ile_stron)+parseInt(ile_plikow)>0){
var tab=new Array();
if(ile_kategorii>0){
tab[tab.length]=ile_kategorii+" kat.";
}
if(ile_stron>0){
tab[tab.length]=ile_stron+" str.";
}
if(ile_plikow>0){
tab[tab.length]=ile_plikow+" pl.";
}
span_ile[0].innerHTML="("+tab.join(", ")+")";
}else{
span_ile[0].innerHTML="(pusta)";
}
}
czy_modyfikacje_kategorii=true;
});
},null,muteks));
})(i,categoryTreebullet);
}
return Promise.all(tab_promise).DodatkiSkryptThen(function(){
return Promise.resolve(czy_modyfikacje_kategorii);
});
}
var muteks_dodawania=new DodatkiSkrypt.Muteks();
this.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych=function(item){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var ns_14=$('body.ns-14');
if(ns_14.length>0){
var muteks_zdarzenia=new DodatkiSkrypt.Muteks();
var tab_promise_zdarzenia=new Array();
var czy_modyfikacje_kategorii=undefined;
tab_promise_zdarzenia.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
if(!item){
var fullname=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(DodatkiSkrypt.Info.page.fullname);
}else{
var element_a=$(item).find('a').not('.CategoryTreeToggle').first();
var href=$(element_a).attr('href');
href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href,true);
var fullname=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(href.replace(/^\/wiki\//g,""));
}
var wartosc=DodatkiSkrypt.DodatkiSkryptUserOption.get(fullname,"CzłonkowieKategorii:");
return wartosc.DodatkiSkryptThen(function(data){
if(!data){return;}
var tab_strony=data.split("||");
var muteks=new DodatkiSkrypt.Muteks();
var tab_promise=new Array();
for(var i=0;i<tab_strony.length;++i){
(function(i,tab_strony){
var strona;var sortkey;var numer_porzadku;var przestrzen;var nazwa;
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var strona_sort=tab_strony[i];
var tab_strona_sort=strona_sort.split("|");
strona=tab_strona_sort[0];
sortkey=tab_strona_sort[1]||"";
var promise_przestrzen=DodatkiSkrypt.Scribunto.Nazwy.NAZWAPRZESTRZENI(strona);
var promise_pozycja=DodatkiSkrypt.Scribunto.Nazwy.NAZWASTRONY(strona);
return Promise.all([promise_przestrzen,promise_pozycja]).DodatkiSkryptThen(function(data){
przestrzen=data[0];pozycja=data[1];
if(!item){
return this_zmienna.DodawanieDoStrukturyKategoriiInneStronyZerowegoStopniaRozbudowy(pozycja,przestrzen,sortkey);
}else{
var tab={"Kategoria":0,"Plik":2,};
numer_porzadku=(tab[przestrzen]!=undefined)?tab[przestrzen]:1;
if(numer_porzadku==0){
var wezel=$(item).siblings('.CategoryTreeChildren');
return WstawPozycjeNaStronieKategoriiWedleDanychStron(fullname,0,wezel,przestrzen,pozycja,sortkey+pozycja,true,null,null);
}
}
});
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab={"Kategoria":0,"Plik":2,};
numer_porzadku=(tab[przestrzen]!=undefined)?tab[przestrzen]:1;
if((!item)||(numer_porzadku==0)){
czy_modyfikacje_kategorii=((czy_modyfikacje_kategorii)||(numer_porzadku==0));
return tabela_sortkey_promise[fullname][numer_porzadku].DodatkiSkryptThen(function(tablica_sortkey){
tablica_sortkey[strona]=sortkey;
});
}
},null,muteks));
})(i,tab_strony);
}
return Promise.all(tab_promise);
});
},null,muteks_zdarzenia));
tab_promise_zdarzenia.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return this_zmienna.AktualizowanieInformacjiOKategoriiNaStronieKategoriowej(item).DodatkiSkryptThen(function(data){
czy_modyfikacje_kategorii=data||czy_modyfikacje_kategorii;
});
},null,muteks_zdarzenia));
tab_promise_zdarzenia.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var strfun=$(DodatkiSkrypt.Szereg.IdCSS(3,new Array(' > #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle')));
$(strfun).off('click');
if($(strfun).length>0){DodatkiSkrypt.requireFile('ext.categoryTree')();};
},null,muteks_zdarzenia));
return Promise.all(tab_promise_zdarzenia).DodatkiSkryptThen(function(){
return czy_modyfikacje_kategorii;
});
}
},null,muteks_dodawania);
}
this.UstawZdarzeniaKategoriiNaStronieKategoriowej=function(){
var muteks=new DodatkiSkrypt.Muteks();
var FunkcjaWstawianiaZdarzeniowychElementowychFunkcyjnych=function(){
var id=$(this);
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var item=$(id).parent().parent();
var promise=new Promise(function(resolve,reject){
var Czekaj=function(){
if($(id).data('ct-loaded')){resolve();}else{setTimeout(Czekaj,0);};
}
Czekaj();
});
promise.DodatkiSkryptThen(function(){
if(!$(id).data('ct-aktualizacja')){
$(id).data('ct-aktualizacja',true);
var czas=0;
var categoryTreeChildrenFun=function(resolve,reject){
var notice=$(id).parents('.CategoryTreeItem').siblings('.CategoryTreeChildren').children('.CategoryTreeNotice');
if((notice!==null)&&(notice.length>0)){
var komunikat=notice[0].innerHTML;
if((komunikat=="nic nie znaleziono")||(komunikat=="brak podkategorii")){
resolve("Dobrze");
return;
}
}
var el=$(id).parents('.CategoryTreeItem').siblings('.CategoryTreeChildren').children('.CategoryTreeSection');
if ((el!==null)&&(el.length>0)){resolve("Dobrze");}else{
if(czas>=30000){reject("Dobrze");}else{
setTimeout(function(){categoryTreeChildrenFun(resolve,reject);},300);
czas+=300;
}
}
}
$(document).DodatkiSkryptPromise(categoryTreeChildrenFun).DodatkiSkryptThen(function(){
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle'))).off('click');
return this_zmienna.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych(item).DodatkiSkryptThen(function(data){
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle'))).on('click', FunkcjaWstawianiaZdarzeniowychElementowychFunkcyjnych);
});
});
}
});
},null,muteks);
}
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle'))).on('click', FunkcjaWstawianiaZdarzeniowychElementowychFunkcyjnych);
}
this.StartSubKategoriesStrona=function(muteks_strona){
if(gadget_uruchom_obsluge_kategorie){
var this_zmienna=this;
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.DodatkiSkryptUserOption.set("Kategoria:Szablony z niejawnie błędnymi parametrami","Kategoria:Abłąd|Abłąd2||Kategoria:ZZAbłąd|ZZbłąd2||Kategoria:Szablony - błędy szablonów||Kategoria:Kategorie||Kategoria:Kategorie dla kategorii|Błędy p||Plik:Burza_mozgu.png||Plik:C.pdf|Ag||Plik:Zanurkuj w Pythonie.pdf|Ah","CzłonkowieKategorii:");
DodatkiSkrypt.DodatkiSkryptUserOption.set("Kategoria:Szablon kategoria - nieistniejąca kategoria","Wikipedysta:Persino/brudnopis1||Wikipedysta:Persino/brudnopis||Kategoria:Szablony - błędy szablonów||Kategoria:Kategorie||Plik:Burza_mozgu.png||Plik:C.pdf|Ag||Plik:Zanurkuj w Pythonie.pdf|Ah","CzłonkowieKategorii:");
//var this=new KategorieSubst.KategorieSubst();
var muteks_kategorie=new DodatkiSkrypt.Muteks();
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return this_zmienna.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych().DodatkiSkryptThen(function(){
var tab_promise=new Array();
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeSection > .CategoryTreeItem'))).DodatkiSkryptEach(function(i,element){
tab_promise.push(this_zmienna.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych(element,true));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_kategorie);
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return this_zmienna.UstawZdarzeniaKategoriiNaStronieKategoriowej();
},null,muteks_kategorie);
},null,muteks_strona);
}
}
}
/*StronicowyParser.LinkiKategorii*/
var promise=new Promise(function(resolve,reject){
var Czekaj=function(){
if(window.DodatkiSkrypt){
resolve(window.DodatkiSkrypt);
}else{
setTimeout(Czekaj,0);
}
}
Czekaj();
});
promise.then(function(DodatkiSkrypt){
var DodatkiStrona=new Array();
DodatkiStrona.NumerSubst=NumerSubst;
DodatkiStrona.DymkiSubst=DymkiSubst;
DodatkiStrona.SzablonSubst=SzablonSubst;
DodatkiStrona.StronaSubst=StronaSubst;
DodatkiStrona.KategorieSubst=KategorieSubst;
window.DodatkiStrona=DodatkiStrona;
});
})(mediaWiki,jQuery);
2ylstuj4uwgyuas2lpwarvgakxnme1e
542682
542681
2026-05-12T05:34:07Z
Persino
2851
542682
javascript
text/javascript
(function(mw,$){
var NumerSubst=new Array();
var DymkiSubst=new Array();
var SzablonSubst=new Array();
var StronaSubst=new Array();
var KategorieSubst=new Array();
/**/
var czy_nie_gconfig_numersubst=false;
var czy_nie_gconfig_dymkisubst=false;
var czy_nie_gconfig_szablonsubst=false;
var czy_nie_gconfig_stronasubst=false;
var czy_nie_gconfig_kategoriesubst=false;
/**/
NumerSubst.NumerowanieNaglowkow=function(){
/**/
var gadget_numerowanie_nie_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_normalne_nie_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej=undefined;
/**/
var gadget_numerowanie_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_normalne_na_stronie_zbiorczej=undefined;
var gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej=undefined;
/**/
var gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var gadget_numerowanie_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_numersubst){
czy_nie_gconfig_numersubst=true;
mw.messages.set({
'NumerSubst-name': 'Numerowanie nagłówków',
'NumerSubst-description-page': 'Wikibooks:StronicowyParser',
'NumerSubst-numerowanie_nie_na_stronie_zbiorczej': 'Włącz numerowanie nagłówków nie na stronie zbiorczej.',
'NumerSubst-numerowanie_normalne_nie_na_stronie_zbiorczej': "Włącz numerowanie, bez prefiksów, nagłówków nie na stronie zbiorczej.",
'NumerSubst-numerowanie_asynchroniczne_nie_na_stronie_zbiorczej': "Sprawdza, czy na stronie niezbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'NumerSubst-numerowanie_na_stronie_zbiorczej': 'Włącz numerowanie nagłówków na stronie zbiorczej.',
'NumerSubst-numerowanie_normalne_na_stronie_zbiorczej': "Włącz numerowanie, bez prefiksów, nagłówków na stronie zbiorczej.",
'NumerSubst-numerowanie_asynchroniczne_na_stronie_zbiorczej': "Sprawdza, czy na stronie zbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'NumerSubst-numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'NumerSubst-numerowanie_zapisz_dane_na_kliencie':'Zapisuje dane, co do numerowania rozdziałów i artykułówna kliencie',
});
gConfig.register('NumerSubst', {name: mw.msg('NumerSubst-name'), descriptionPage: mw.msg('NumerSubst-description-page')}, [
{
name: 'numerowanie_nie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_nie_na_stronie_zbiorczej']
},
{
name: 'numerowanie_normalne_nie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_normalne_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_NumerSubst-numerowanie_normalne_nie_na_stronie_zbiorczej']
},
{
name: 'numerowanie_asynchroniczne_nie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_asynchroniczne_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_asynchroniczne_nie_na_stronie_zbiorczej']
},
{
name: 'numerowanie_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_na_stronie_zbiorczej']
},
{
name: 'numerowanie-normalne_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_normalne_na_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_NumerSubst-numerowanie_normalne_na_stronie_zbiorczej']
},
{
name: 'numerowanie_asynchroniczne_na_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_asynchroniczne_na_stronie_zbiorczej'),
type: 'boolean',
deflt:true,
legacy: [window, 'wb_NumerSubst-numerowanie_asynchroniczne_na_stronie_zbiorczej']
},
{
name: 'numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('NumerSubst-numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_NumerSubst-numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'numerowanie_zapisz_dane_na_kliencie',
desc: mw.msg('NumerSubst-numerowanie_zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_NumerSubst-numerowanie_zapisz_dane_na_kliencie']
},
]);
}
gadget_numerowanie_nie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_nie_na_stronie_zbiorczej')==true);
gadget_numerowanie_normalne_nie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_normalne_nie_na_stronie_zbiorczej')==true);
gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_asynchroniczne_nie_na_stronie_zbiorczej')==true);
/**/
gadget_numerowanie_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_na_stronie_zbiorczej')==true);
gadget_numerowanie_normalne_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_normalne_na_stronie_zbiorczej')==true);
gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej=(gConfig.get('NumerSubst', 'numerowanie_asynchroniczne_na_stronie_zbiorczej')==true);
/**/
gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(gConfig.get('NumerSubst','numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
gadget_numerowanie_zapisz_dane_na_kliencie=(gConfig.get('NumerSubst','numerowanie_zapisz_dane_na_kliencie')==true);
}
gadget_numerowanie_nie_na_stronie_zbiorczej=(gadget_numerowanie_nie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_nie_na_stronie_zbiorczej:true;
gadget_numerowanie_normalne_nie_na_stronie_zbiorczej=(gadget_numerowanie_normalne_nie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_normalne_nie_na_stronie_zbiorczej:false;
gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej=(gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej:true;
/**/
gadget_numerowanie_na_stronie_zbiorczej=(gadget_numerowanie_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_na_stronie_zbiorczej:true;
gadget_numerowanie_normalne_na_stronie_zbiorczej=(gadget_numerowanie_normalne_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_normalne_na_stronie_zbiorczej:false;
gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej=(gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej!==undefined)?gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej:true;
/**/
gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!==undefined)?gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true;
gadget_numerowanie_zapisz_dane_na_kliencie=(gadget_numerowanie_zapisz_dane_na_kliencie!==undefined)?gadget_numerowanie_zapisz_dane_na_kliencie:false;
/**/
var this_zmienna=this;
/**/
/**/
this.UstalanieZmiennychNumerowanieNapisoweWprowadzeniaTekstu=function(aktualna_strona,element){
var funkcja=function(){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
if(wikikod){
var gadget_numerowanie=gadget_numerowanie_na_stronie_zbiorczej;
var gadget_numerowanie_normalne=gadget_numerowanie_normalne_na_stronie_zbiorczej;
var gadget_numerowanie_asynchroniczne=gadget_numerowanie_asynchroniczne_na_stronie_zbiorczej;
}else{
var gadget_numerowanie=gadget_numerowanie_nie_na_stronie_zbiorczej;
var gadget_numerowanie_normalne=gadget_numerowanie_normalne_nie_na_stronie_zbiorczej;
var gadget_numerowanie_asynchroniczne=gadget_numerowanie_asynchroniczne_nie_na_stronie_zbiorczej;
}
return Promise.resolve([gadget_numerowanie,gadget_numerowanie_normalne,gadget_numerowanie_asynchroniczne]);
});
};
if(gadget_numerowanie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
return Promise.resolve([false,false,false]);
}
});
}else{
return funkcja();
}
}
var promise_numerowanie=this.UstalanieZmiennychNumerowanieNapisoweWprowadzeniaTekstu();
var tab_promise_numerowanie=new Array();
tab_promise_numerowanie.push(promise_numerowanie);
var this_zmienna=this;
//gadget_numerowanie=((gadget_numerowanie!==undefined)?gadget_numerowanie:true);
var UstalanieZmiennychNumerowanie=function(aktualna_strona,element,funkcja){
var gadget_numerowanie;var gadget_numerowanie_normalne;var gadget_numerowanie_asynchroniczne;
return promise_numerowanie.DodatkiSkryptThen(function(data){
gadget_numerowanie=data[0];gadget_numerowanie_normalne=data[1];gadget_numerowanie_asynchroniczne=data[2];
if(gadget_numerowanie_asynchroniczne){
if(aktualna_strona){
tab_promise_numerowanie.push(this_zmienna.UstalanieZmiennychNumerowanieNapisoweWprowadzeniaTekstu(aktualna_strona,element));
promise_numerowanie=tab_promise_numerowanie.at(-1);
return promise_numerowanie;
}
}
return data;
}).DodatkiSkryptThen(function(data){
return funkcja(data,aktualna_strona,element);
}).DodatkiSkryptFinally(function(data){
if(gadget_numerowanie_asynchroniczne){
if(aktualna_strona){
tab_promise_numerowanie.pop();
promise_numerowanie=tab_promise_numerowanie.at(-1);
}
}
return data;
});
}
/**/
this.NumerowanieNaglowkowStronZObiektami=function(id_numerowanie,prefix){
var fun_hnumer=DodatkiSkrypt.Szereg.HNumer.LiczonyHNumer();
var numeracja=new Array();
var czy_numerowac=false;
var p=false;
var stare_fun_hnumer;
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
$(id_numerowanie).find(hn).not(toc_h).DodatkiSkryptEach(function(i,h_element){
/**/
var div_element=$(h_element).closest('.mw-heading');
var element=($(div_element).length>0)?$(div_element):$(h_element);
var szablon_spec=$(element).parents('.strona_start').first();
var szablon_spec_w_drzewie=$(id_numerowanie).find(szablon_spec);
if((szablon_spec.length>0)&&(szablon_spec_w_drzewie.length>0)){return;}
/**/
var CzyTak=function(klasa1,not_klasa2){
var str_elements=$(element).parents(klasa1);
if(not_klasa2){
str_elements=$(str_elements).not(not_klasa2);
}
if(($(str_elements).length>0)
&&(($(str_elements).filter(id_numerowanie).length==0)
&&($(str_elements).find(id_numerowanie).length==0)
)
){return true;}
return false;
}
var tak=CzyTak('.rodzic_szablon_subst_js');if(tak){return;};
var tak=CzyTak('.artykułsubst');if(tak){return;};
var tak=CzyTak('.klasa_książki');if(tak){return;};
var tak=CzyTak('.rozdział_książki','.klasa_książki > .klasa_nagłówka > .rozdział_książki');if(tak){return;};
/**/
var szablon=$(element).find('.mw-numbering-main-page, .numeracja');
if(szablon.length>0){return;};
czy_numerowac=true;
var hn_element=$(h_element).not(toc_h).first().get(0);
var poziom_naglowka=DodatkiSkrypt.Szereg.HNumer.PoziomNapisuWprowadzeniaTekstu(hn_element);
var numer=fun_hnumer(poziom_naglowka);
var czy_ponumerowany=$(element).children('.numeracja');
if(numeracja.length<numer){numeracja.push(1);}
else if(numeracja.length>numer){numeracja=numeracja.slice(0,numer);numeracja[numer-1]+=parseInt(1);}
else if(numeracja.length==numer){numeracja[numer-1]+=parseInt(1);};
if(czy_ponumerowany.length==0){
var span=document.createElement('span');
span.setAttribute('class',"numeracja");
$(span).html(((prefix!=="")?(prefix+"."):"")+numeracja.join('.')+". ");
var child=$(element).contents().first();
if($(child).length>0){
$(child).before(span);
}else{
$(element).append(span);
}
}else{
$(czy_ponumerowany).first().html(((prefix!=="")?(prefix+"."):"")+numeracja.join('.')+". ");
}
});
return czy_numerowac;
}
this.NumerowanieNaglowkowStron=function(id_numerowanie,prefix,czy_bez_prefix){
return promise_numerowanie.DodatkiSkryptThen(function(data){
var gadget_numerowanie=data[0];var gadget_numerowanie_normalne=data[1];var gadget_numerowanie_asynchroniczne=data[2];
if(!gadget_numerowanie){return;}
if(!czy_bez_prefix){prefix="";};
var tab_promise=new Array();
var czy_numerowac=this_zmienna.NumerowanieNaglowkowStronZObiektami(id_numerowanie,prefix);
var strona_start=$(id_numerowanie).find('.strona_start');
if(strona_start.length>0){
for(var i=0;i<strona_start.length;++i){
var artykulsubst=$(strona_start[i]).find(".artykułsubst");
var obiekt;
if(artykulsubst.length>0){
obiekt=$(artykulsubst).find('.zawartość')[0];
}else{
obiekt=$(strona_start[i]).find('.ciało_strona')[0];
}
if(obiekt){
var prefix2=((strona_start.length==1)?((!czy_numerowac)?prefix:""):"");
if(prefix2!=""){
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,prefix2,czy_bez_prefix);
tab_promise.push(promise);
}else if(artykulsubst.length>0){
var str_adres=$(artykulsubst).find('.adres');
if((str_adres.length>0)&&(obiekt!=null)){
if(!gadget_numerowanie_normalne){
var adres=$(str_adres[0]).html().trim();
var artykul=DodatkiSkrypt.Nazwy.ARTICLENAME(adres);
var aktualna_strona=DodatkiSkrypt.Nazwy.FULLPAGENAME(adres);
var promise=UstalanieZmiennychNumerowanie(aktualna_strona,id_numerowanie,function(data_promise_numerowanie,aktualna_strona,id_numerowanie){
return this_zmienna.PreparujStronyJednostek(obiekt,artykul,aktualna_strona,true).DodatkiSkryptThen(function(){
return this_zmienna.NumerowanieNaglowkowStron(obiekt,"");
});
});
tab_promise.push(promise);
}else{
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,"",czy_bez_prefix);
tab_promise.push(promise);
}
}else{
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,"",czy_bez_prefix);
tab_promise.push(promise);
}
}else{
var promise=this_zmienna.NumerowanieNaglowkowStron(obiekt,"",czy_bez_prefix);
tab_promise.push(promise);
}
}
}
}
return Promise.DodatkiSkryptAll(tab_promise);
});
}
this.FunkcjaZdarzenStronyGlownejPodrecznika=function(){
}
this.NumerowanieStronGłównychPodręcznikowWedlugZebranychDanych=function(id_numerowanie,json,aktualna_strona){
var JSONDane=function(json,numer_porzadkowy){
for(var rozdzial in json){
var tab_rozdzial=json[rozdzial];
for(var numer_rozdzialu in tab_rozdzial){
var tab_numer_rozdzial=tab_rozdzial[numer_rozdzialu];
for(var artykul in tab_numer_rozdzial){
var tab_artykul=tab_numer_rozdzial[artykul];
for(var numer_artykulu in tab_artykul){
var tab_numer_artykulu=tab_artykul[numer_artykulu];
for(var i in tab_numer_artykulu){
var tab_i=tab_numer_artykulu[i];
if(tab_i["numer"]==numer_porzadkowy){
var czy_podreczniku=tab_i["czy w podręczniku"];
var czy_url=!!(tab_i["url"]);
var zebrane_dane={
"rozdział":DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(/*DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(*/rozdzial/*)*/))),
"numer rozdziału":numer_rozdzialu,
"artykuł":(((!czy_podreczniku)&&(!czy_url))?(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(artykul))))):(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(artykul))))),
"numer artykułu":numer_artykulu,
"link":((tab_i["link"])?(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["link"])))):undefined),
"przekierowanie":((tab_i["przekierowanie"]!==undefined)?
((!czy_podreczniku)?(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["przekierowanie"]))))):(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["przekierowanie"]))))):undefined),
"pełna nazwa książki":((tab_i["pełna nazwa książki"]!=undefined)?
(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tab_i["pełna nazwa książki"]))))):undefined),
"kod języka":tab_i["kod języka"],
"kod projektu":tab_i["kod projektu"],
"nazwa":((tab_i["nazwa"]!==undefined)?(DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(/*DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(*/tab_i["nazwa"]/*)*/)))):undefined),
"spis treści":tab_i["spis treści"],
"dodane":tab_i["dodane"],
"czy w podręczniku":czy_podreczniku,
"inna książka":tab_i["inna książka"],
"url":czy_url,
};
return zebrane_dane;
}
}
}
}
}
}
return null;
}
/**/
var przestrzenie_alternatywne={
"w":"wikipedia",
"b":"wikibooks",
"wikt":"wiktionary",
"q":"wikiquote",
"s":"wikisource",
"voy":"wikivoyage",
"n":"wikinews",
"v":"wikiversity",
};
var PrzestrzenStrony=function(klucz,tabela, czy_klucz){
klucz=klucz.toLowerCase();
var projekt=tabela[klucz];
if(projekt){return czy_klucz?klucz:projekt;}
for(p in tabela){
var projekt=tabela[p];
if(projekt){
var projekt_data=(typeof(projekt)=="object")?projekt[0]:projekt;
projekt_data=projekt_data.toLowerCase();
if(projekt_data==klucz){
return czy_klucz?p:projekt;
}
}
}
return undefined;
}
var przestrzenie_poza={
"foundation":"wikimedia",
"commons":"wikimedia",
"species":"wikimedia",
"meta":"wikimedia",
"mw":["mediawiki","www",],
"d":["wikidata","www",],
"f":["wikifunctions","www",],
};
/**/
var LiczbaElementowaTablicowaJson=function(){
for(var numer_porzadkowy=1;;++numer_porzadkowy){
var element_json=JSONDane(json,numer_porzadkowy);
if(element_json===null){
return Math.max(numer_porzadkowy-1,0);
}
}
return 0;
}
var FunctionNumeracja=function(p){
var i_begin=0;
var max_i_begin=1;
var j=1;
var f=0;
var k=-1;
var dane;var yes=true;
var CzyPomijanieElementoweSpisuRzeczy=function(element,pierwsze_dziecko,j,tekst){
//console.log("BADANIE ELEMENTU:",element,element.outerHTML,tekst)
var tak=(
(j>1)
&&($(element).parents('div.center, div.mw-heading').find('.mw-numbering-main-page').length==0)
&&($(element).closest('.ambox, .tmbox, .fmbox, .ombox, .dmbox, .npm, .wm').length==0)
&&(!/^\s*$/g.test($(element).text()))
&&($(element).not('a').length==0)
&&(!/^\s*\-\s*/g.test($(element).closest('td,th').text()))
&&($(element).closest('.noprint').length==0)
&&(($(element).closest("p").length==0)||(/^[^\n]*:[^\S\n]*$/g.test(tekst)))
&&(!pierwsze_dziecko)
&&(!DodatkiSkrypt.Szereg.Html.Float(element))
&&($(element).filter('.mw-file-description').length==0)
&&($(element).closest("[typeof=\"mw:File\"]").length==0)
&&($(element).closest('.reference').length==0)
&&($(element).closest('.toc_artykuł').length==0)
&&($(element).filter("a.mw-selflink.selflink").length==0)
&&(!(
($(element).filter("a:not(.mw-selflink):not(.selflink)").length>0)
&&(
(/^([Oo]k[łl]adka|[Ww]ersja_do_druku|[Ww]ersja_do_czytania)$/g.test(tekst))
)
))
)
console.log("BADANIE ELEMENTU:",element,element.outerHTML,tekst,tak);
return tak;
}
var RozdzialBezNumeracji=function(tekst){
var czy=/^[\d\.]+\s+/g.test(tekst)||/^[\d\.]+\s*$/g.test(tekst);
if(czy){
var num=tekst.match(/^([\d\.]+)/g).toString();
var tab=num.split(".");
if(tab.length==1){
if(/^\d+$/g.test(num)){
return tekst;
}
}else{
console.log(tab,tekst,"_____________________________________")
if(tab[tab.length-1]==""){tab.splice(tab.length-1,1);};
}
var tak=true;
for(var i=0;i<tab.length;++i){
tak=tak&&(/^\d+$/g.test(tab[i]));
if(!tak){break;};
}
if(tak){
tekst=tekst.replace(/^[\d\.]+\s*/g,"");
}
}
return tekst;
}
var OperacjeNaTestowychElementach=function(element){
var iterator=DodatkiSkrypt.Szereg.Html.IteratorPotomkowyPoElemencieHtml(element)
var __element;
do{
__element=iterator();
console.log(__element,"TYTAN0123")
if(__element){
if(!__element.tagName){
if($(__element).closest(".mw-numbering-main-page").length>0){continue;}
var text=__element.nodeValue;
text=RozdzialBezNumeracji(text);
console.log(text,"TYTAn0000000",__element.nodeValue)
text=text.replace(/^\d+\s+/g,"");
text=text.replace(/^\s*[IVXL]+\s+/g,"");
text=text.replace(/\s*\([0-9a-zA-Z]+\)\s+/g,"")
__element.nodeValue=text;
break;
}
}
}while(__element);
}
var roznica_spis_tresci=0;
var Numerowanie=function(element,tag,tekst,pierwsze_dziecko,nazwa,czy_edit){
dane=((yes)||(!dane))?JSONDane(json,j):dane;
if(dane===null){return;}
var Numer=function(dane){
var numer_rozdzialu=dane["numer rozdziału"];
var numer_artykulu=dane["numer artykułu"];
var numer=((numer_rozdzialu!="")&&(numer_artykulu!=""))?(numer_rozdzialu+"."+numer_artykulu):((numer_rozdzialu)?numer_rozdzialu:numer_artykulu);
if(numer==""){return null;}
numer="("+numer+") ";
return numer;
}
if(dane["dodane"]){
yes=true;
++j;
dane=((yes)||(!dane))?JSONDane(json,j):dane;
if(dane==null){return;}
}
var spis_tresci;var rozdzial;var artykul;var przekierowanie;var numer_rozdzialu;var numer_artykulu;
var fun_pozycja=function(){
spis_tresci=dane["spis treści"];
rozdzial=dane["rozdział"];
artykul=dane["artykuł"];
przekierowanie=dane["przekierowanie"];
numer_rozdzialu=dane["numer rozdziału"];
numer_artykulu=dane["numer artykułu"];
}
fun_pozycja();
mw.log(rozdzial,"TYTAn123")
if((spis_tresci===undefined)&&(rozdzial=="Spis treści")&&(numer_rozdzialu=="")&&(artykul=="")&&(numer_artykulu=="")){
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
}
console.log(rozdzial,spis_tresci,numer_rozdzialu,artykul,numer_artykulu,"TYTAn1231");
if((spis_tresci==undefined)&&(rozdzial=="Główny spis treści")&&(numer_rozdzialu=="")&&(artykul=="")&&(numer_artykulu=="")){
console.log("TYTAn1232")
roznica_spis_tresci+=0;
console.log("TYTAN1233")
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
}else{
var spis_fullname=DodatkiSkrypt.Nazwy.ARTICLENAME(DodatkiSkrypt.Info.page.fullname);
var rozdzial_temp="Spis treści - "+spis_fullname;
spis_fullname=spis_fullname.replace(/[\s_]/g,"_");
console.log(rozdzial,rozdzial_temp,numer_rozdzialu,artykul,numer_artykulu,DodatkiSkrypt.Info.page.fullname,"TYTAN76979")
if((rozdzial==rozdzial_temp)&&(numer_rozdzialu!="")&&(artykul=="")&&(numer_artykulu=="")){
console.log("TYTAN1234")
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
console.log(rozdzial,rozdzial_temp,numer_rozdzialu,artykul,numer_artykulu,spis_fullname,DodatkiSkrypt.Info.page.fullname,"TYTANbbbbb")
if((rozdzial==rozdzial_temp)&&(numer_rozdzialu!="")&&(artykul==spis_fullname)&&(numer_artykulu=="")){
++j;
dane=JSONDane(json,j);
max_i_begin++;
if(dane===null){return;}
fun_pozycja();
}
}
}
var NumerujLinki=function(dane,czy_a,tag){
var numer=Numer(dane);
if(!numer){return;};
var tak=false;
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var h_element=$(element).closest(hn).not(toc_h);
var element_heading=$(h_element).closest('div.mw-heading');
var hn_element=(($(element_heading).length>0)?$(element_heading):$(h_element));
var element_naglowek=(($(hn_element).length>0)?$(hn_element):($(element).closest('div.center')));
$(element_naglowek).DodatkiSkryptEach(function(i,element){
$(element).find('> .mw-numbering-main-page, > .link > .mw-numbering-main-page').DodatkiSkryptEach(function(i,element){
if($(element).html()==numer){tak=true;}
});
});
$($(element).parent()).filter('div.template-center').find(' > div').DodatkiSkryptEach(function(i,element){
$(element).find('> .mw-numbering-main-page, > .link > .mw-numbering-main-page').DodatkiSkryptEach(function(i,element){
if($(element).html()==numer){tak=true;}
});
});
if(tak){return;};
var span=document.createElement('span');
$(span).addClass('mw-numbering-main-page');
$(span).html(numer);
/*if((tag)||(tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6")){
element2=$(element).parent();
if(element2.length>0){element=element2[0];};
}*/
if(!czy_a){
$(element).before(span);
}else{
var if_dziecko=(pierwsze_dziecko)?pierwsze_dziecko:element.firstChild;
if(if_dziecko){
$(if_dziecko).before(span);
}else{
$(element).append(span);
}
}
$(element).closest('li').parents("ul, ol").filter(".mw-parser-output ul, .mw-parser-output ol").DodatkiSkryptEach(function(i,element){
$(element).addClass('css_numersubst');
});
}
if(tag=="A"){
tekst=DodatkiSkrypt.Szereg.Napis.UsuwanieArtykularnychZnakowych(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(tekst)));
var czy_poza=(!dane["czy w podręczniku"]);
var kod_jezyka=dane["kod języka"];var kod_projektu=dane["kod projektu"];
var link=dane["link"];
var czy_url=dane["url"];
//var link2=link?link.replace(new RegExp("^[:%s_]*"+kod_jezyka+"[%s_:]*:"),"").replace(new RegExp("^[:%s_]*"+kod_projektu+"[%s_:]*:"),""):link;
//link2=link2?link2.replace(new RegExp("^[:%s_]*"+kod_projektu+"[%s_:]*:"),"").replace(new RegExp("^[:%s_]*"+kod_jezyka+"[%s_:]*:"),""):link2;
console.log("TYTAN0",przekierowanie);
if(((artykul!="")&&(numer_artykulu!=""))&&(spis_tresci==undefined)&(czy_poza)&&(((kod_jezyka!=null)&&(kod_jezyka!=""))||((kod_projektu!=null)&&(kod_projektu!=""))||czy_url)&&(link)&&(!((kod_jezyka=="pl")&&(kod_projektu=="b")&&(/^([\s_]*:[\s_]*(?i:pl)){1,}[\s_]*:[\s_]*(?!(?i:b)[\s_]*:)/g.test(link))))/*&&(((kod_projektu=="url")&&(artykul==link))||(link2==(przekierowanie||artykul)))*/){
console.log(czy_url,tekst,"TYTAN123");
if(!czy_url){
var nazwa=dane["nazwa"];
link=link.replace(/^\s*:/g,"");
var klucz=link.match(/^([^:]*):/);
if(klucz==null){
klucz=((kod_jezyka=="pl")?kod_projektu:((kod_projektu=="b")?kod_jezyka:kod_projektu));
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
if(kod_jezyka=="pl"){
link=((kod_projektu!=klucz)?(kod_projektu+":"):"")+link;
}else if(kod_projektu=="b"){
link=klucz_jezyka+":"+link;
}
var artykul_z_kodami=DodatkiSkrypt.Szereg.Styl.PoprawMianoNazwyStrony(link);
}else{
console.log(klucz,"TYTAn")
klucz=klucz[1];
klucz=klucz.toLowerCase();
if(klucz=="pl"){
do{
link=link.replace(/^([^:]*):/,"");
klucz=link.match(/^([^:]*):/);
if(klucz){
klucz=klucz[1];
klucz=klucz.toLowerCase();
}
}while(klucz=="pl");
}
if(link!=(przekierowanie||artykul)){
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
var artykul_z_kodami=link.replace(/^([^:]*:)(.*)$/g,function(s,a,b){
return DodatkiSkrypt.Szereg.Styl.PoprawMianoNazwyStrony(b);
});
}else{
klucz=kod_jezyka;
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
link=kod_projektu+":"+link;
var artykul_z_kodami=DodatkiSkrypt.Szereg.Styl.PoprawMianoNazwyStrony(link);
}
}
var projekt=PrzestrzenStrony(klucz,przestrzenie_alternatywne);
var href;
if(projekt){
var czy_prze=przestrzenie_alternatywne[klucz];
href="//"+((klucz!="b")?(czy_prze?"pl":'en'):"en")+"."+projekt+".org/wiki/"+artykul_z_kodami;
}else{
kod_projektu=link.match(/^[\s_]*(?::[\s_]*)?[^\s:]+[\s_]*:[\s_]*([^\s:]+)[\s_]*:/)[1];
var Href=function(klucz,artykul_z_kodami){
var klucz_tabela=PrzestrzenStrony(klucz,przestrzenie_poza);
var przed_poza;
if(klucz_tabela){
if(typeof(klucz_tabela)=="object"){
klucz_poza=klucz_tabela[0];
przed_poza=klucz_tabela[1];
}else{
klucz_poza=klucz_tabela;
}
}
klucz=PrzestrzenStrony(klucz,przestrzenie_poza,true)||klucz;
if(!przestrzenie_poza[klucz]){
href="//"+((klucz!="b")?klucz:"en")+".wikibooks.org/wiki/"+artykul_z_kodami;
}else{
href="//"+(przed_poza||klucz)+"."+klucz_poza+".org/wiki/"+artykul_z_kodami;
}
return href;
}
if((!kod_projektu)||((klucz!="pl")&&(PrzestrzenStrony(kod_projektu,przestrzenie_alternatywne)))){
href=Href(klucz,artykul_z_kodami);
}else{
var projekt=PrzestrzenStrony(kod_projektu,przestrzenie_alternatywne);
if((klucz=="pl")&&(projekt)){
artykul_z_kodami=artykul_z_kodami.replace(/^[\s_]*(?::[\s_]*)?[^\s:]+[\s_]*:/g,"");
href="//"+((kod_projektu!="b")?klucz:"en")+"."+projekt+".org/wiki/"+artykul_z_kodami;
console.log(href,klucz,projekt,"MAMUT123");
}else{
href=Href(klucz,artykul_z_kodami);
}
}
}
if(href==tekst.replace(/^https?:/gi,"")){
NumerujLinki(dane,false,tag);
yes=true;
++j;
}else{
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
console.log(element.outerHTML,tekst,"ABC1",f);
++f;
}
if(j<=max_i_begin){++i_begin;console.log(tekst,"A",i_begin);};
};
}else{
if(link.replace(/^https?:\/\//gi,"")==tekst.replace(/^https?:\/\//gi,"")){
NumerujLinki(dane,false,tag);
yes=true;
++j;
}else{
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
console.log(element.outerHTML,tekst,"ABC2",f);
f++;
}
if(j<=max_i_begin){++i_begin;console.log(tekst,"B",i_begin);};
}
}
//});
}else{
var pelna_nazwa_ksiazki=dane["pełna nazwa książki"];
var nazwa_artykulu=dane["nazwa"];
var inna_ksiazka=dane["inna książka"];
/**/
var artykul_edit;var przekierowanie_edit;
if(czy_edit){
artykul_edit=artykul.replace(/^([^#]*)#(.*)$/g,"$1");
artykul_edit=artykul_edit.replace(/^(.*)\?\s*\a+[\a\s]*=.*$/g,"$1");
if(przekierowanie){
przekierowanie_edit=przekierowanie.replace(/^([^#]*)#(.*)$/g,"$1");
przekierowanie_edit=przekierowanie_edit.replace(/^(.*)\?\s*\a+[\a\s]*=.*$/g,"$1");
}
}
/**/
var nazwa=DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(nazwa))));
tekst=((czy_poza)?(DodatkiSkrypt.Szereg.Napis.OdWielkiejPierwszaLiteraTekstu(tekst)):tekst);
console.log("TYTAN1",spis_tresci,artykul,numer_artykulu,czy_edit,tekst,nazwa_artykulu,pelna_nazwa_ksiazki,czy_poza)
if(/^\/\/upload\.wikimedia\.org\/[^\/]+\/[^\/]+\/2\/2a\//g.test(tekst)){
tekst=(tekst.match(/^\/\/upload\.wikimedia\.org\/[^\/]+\/[^\/]+\/2\/2a\/(.*)$/)[1].toString())||tekst;
tekst="Media:"+tekst;
}else if(/^\/\/commons\.wikimedia\.org\/wiki\/Special\:UploadWizard\?uselang\=pl\&wpDestFile\=/g.test(tekst)){
tekst=(tekst.match(/^\/\/commons\.wikimedia\.org\/wiki\/Special\:UploadWizard\?uselang\=pl\&wpDestFile\=(.*)$/)[1].toString())||tekst;
tekst="Media:"+tekst;
}
console.log(spis_tresci,artykul,numer_artykulu,inna_ksiazka,czy_edit,czy_poza,tekst,"PPPPPPPPPPPPP123",nazwa,nazwa_artykulu,nazwa==nazwa_artykulu)
if((spis_tresci==undefined)&&((artykul!="")||(numer_artykulu!=""))
&&(
((!inna_ksiazka)&&((!pelna_nazwa_ksiazki)||(!czy_poza)))
?((((!czy_edit)?(pelna_nazwa_ksiazki?artykul:przekierowanie):(pelna_nazwa_ksiazki?artykul_edit:przekierowanie_edit))||przekierowanie||artykul)==tekst)
:(
(
(pelna_nazwa_ksiazki?(pelna_nazwa_ksiazki+"/"):"")
+(((!czy_edit)?(inna_ksiazka?przekierowanie:artykul):(inna_ksiazka?przekierowanie_edit:artykul_edit))||przekierowanie||artykul)
)==tekst
)
)&&((!nazwa_artykulu)||(nazwa==nazwa_artykulu))
){
console.log("TYTAN2");
NumerujLinki(dane,false,tag);
/**/
$(element).parents('dd, li, span:not(.link), b, i, p').first().DodatkiSkryptEach(function(i,element){
OperacjeNaTestowychElementach(element);
});
/**/
$(element).parents('div.toc_ogólnie_spis.toc_artykuł').find('a > span.tocnumber').DodatkiSkryptEach(function(i,element){
var numer_toc=$(element).html();
var numer=numer_rozdzialu+(((numer_rozdzialu!="")&&(numer_artykulu!=""))?("."+numer_artykulu):numer_artykulu);
numer=numer+(((numer!="")&&(numer_toc!=""))?("."+numer_toc):numer_toc);
$(element).html(numer);
});
yes=true;
++j;
}else{
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
++f;
}
if(j<=max_i_begin){++i_begin;};
}
}
}else{
tekst=DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(tekst)));
//rozdzial=DodatkiSkrypt.Szereg.Napis.UsuwanieApostrofowe(rozdzial);
tekst=RozdzialBezNumeracji(tekst);
tekst=DodatkiSkrypt.Szereg.Napis.UsuwanieBezbarwnychZnakowych(tekst);
var spis_tresci_temp=spis_tresci-roznica_spis_tresci;
console.log(rozdzial,tekst,spis_tresci,numer_artykulu,tag,"TYTAN111111111111");
if((rozdzial==tekst)&&((artykul=="")&&(numer_artykulu==""))&&(tag)&&(spis_tresci!=undefined)&&(((spis_tresci_temp>0)&&((((tag=="DIV")&&(($(element).hasClass('mw-heading'))||($(element).parent().hasClass('template-center'))||($(element).hasClass('center'))))/*||($(element).parents('.center,center').length>0)*/||(tag=="CENTER"))||((tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6"))))||((spis_tresci<0)&&(/*($(element).parents('li, dd').length>0)||*/(tag=="DD")||(tag=="LI")||(tag=="DT")))||((spis_tresci==0)&&(/*($(element).parents('p,i,b').length>0)||*/(tag=="P")||(tag=="I")||(tag=="B")||(tag=="CENTER")||(tag=="TD")||(tag=="TH")||(tag=="CAPTION"))))){
NumerujLinki(dane,true,tag);
console.log(element,tekst,"GGG1")
$(element).DodatkiSkryptEach(function(i,element){
OperacjeNaTestowychElementach(element);
});
yes=true;
++j;
}else{
yes=false;
var warunek=((tag)&&((((((tag=="DIV")&&(($(element).hasClass('mw-heading'))||($(element).parent().hasClass('template-center'))||($(element).hasClass('center'))))/*||($(element).parents('.center,center').length>0)*/||(tag=="CENTER"))||((tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6"))))||((spis_tresci<0)&&(/*($(element).parents('li, dd').length>0)||*/(tag=="DD")||(tag=="LI")||(tag=="DT")))||((/*($(element).parents('p,i,b').length>0)||*/(tag=="P")||(tag=="I")||(tag=="B")||(tag=="CENTER")||(tag=="TD")||(tag=="TH")||(tag=="CAPTION")))));
if(warunek){
if(CzyPomijanieElementoweSpisuRzeczy(element,pierwsze_dziecko,j,tekst)){
console.log(element.outerHTML,tekst,"ABC4",f,j,tag,element,rozdzial);
++f;
}
}
if((tag)&&((tag!="P")||((tag=="P")&&(!pierwsze_dziecko)))&&(j<=max_i_begin)){++i_begin;console.log(tekst,tag,"F",i_begin)};
}
}
}
var FunkcjaZnacznikaP=function(element,czy_tag){
var str_p=$(element).parents("P").first();
if(str_p.length>0){
var klon=document.createElement('div');
var czy_w_nim_a=false;
var pierwsze_dziecko=undefined;
for (const element_dzieci of str_p[0].childNodes){
var nowy_tag=(element_dzieci.tagName)?(element_dzieci.tagName.toUpperCase()):null;
if(nowy_tag!=="BR"){
if(!pierwsze_dziecko){
pierwsze_dziecko=element_dzieci;
}
if((element_dzieci==element)||($(element_dzieci).find(element).length>0)){czy_w_nim_a=true;}
$(klon).append(element_dzieci.cloneNode(true));
}else{
if(czy_w_nim_a){
czy_w_nim_a=undefined;
if(!$(klon.firstChild).hasClass('mw-numbering-main-page')){
var tekst_rozdzialu=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(klon).html())));
var element_rozdzialu=str_p[0];
//if(j<=max_i_begin){++i_begin;};
Numerowanie(element_rozdzialu,"P",tekst_rozdzialu,pierwsze_dziecko);
break;
}
}
pierwsze_dziecko=undefined;
klon=document.createElement('div');
}
}
if(czy_w_nim_a){
if(!$(klon.firstChild).hasClass('mw-numbering-main-page')){
var tekst_rozdzialu=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(klon).html())));
var element_rozdzialu=str_p[0];
//if(j<=max_i_begin){++i_begin;};
Numerowanie(element_rozdzialu,"P",tekst_rozdzialu,pierwsze_dziecko);
}
}
}
}
var bookname=DodatkiSkrypt.Nazwy.BOOKNAME(((aktualna_strona)?(aktualna_strona):(DodatkiSkrypt.Info.page.fullname)));
var namespace=DodatkiSkrypt.Nazwy.NAMESPACE(((aktualna_strona)?(aktualna_strona):(DodatkiSkrypt.Info.page.fullname)));
bookname=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(bookname);
namespace=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(namespace);
$(id_numerowanie).DodatkiSkryptEach(function(i,element){
var iterator=DodatkiSkrypt.Szereg.Html.IteratorPotomkowyPoElemencieHtml(element);
while(true){
var element=iterator();
if(
(element)
&&(((element.tagName)&&($(element).filter('style, link, script, noscript').length>0))
||($(element).closest('style, link, script, noscript').length>0))
){continue;}
k++;
console.log(k,p,"TYTAN",j,i_begin,max_i_begin,element);
if(k<p){continue;};
if(!element){break;};
(function(element){
var tag_name=element.tagName;
var tag;
if(tag_name){tag=tag_name.toUpperCase();}else{tag=null;}
var tekst;
if(element.tagName){
var tag_element=element.tagName.toUpperCase()
}
if(!tag){
console.log("SS2",element);
FunkcjaZnacznikaP(element,false);
if(j<=max_i_begin){++i_begin;};
}else if(
((tag=="DIV")&&($(element).hasClass('mw-heading')))
||((tag=="H1")||(tag=="H2")||(tag=="H3")||(tag=="H4")||(tag=="H5")||(tag=="H6"))
){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
$(div).find('.numeracja, .mw-numbering-main-page, .mw-editsection').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}else if((tag=="DIV")&&(($(element).hasClass('center'))|($(element).parent().hasClass('template-center')))){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}else if((tag=="TD")||(tag=="TH")||(tag=="CAPTION")){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}else if((tag=="P")||(((tag=="B")||(tag=="I"))&&($(element).find('br').length==0))){
var div=document.createElement('div' );
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
console.log("SS1",element);
Numerowanie(element,tag,tekst);
}else if((tag=="DD")||(tag=="DT")){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
//var czy_li=false;
//for(var begin=div.firstChild;begin!=null;begin=begin.nextSibling){
// if(begin.tagName!=null){
// var tag_dziecko=begin.tagName.toUpperCase();
// if((!czy_li)&&((tag_dziecko=="DL")||(tag_dziecko=="DD"))){
// czy_li=true;
// }
// if(czy_li){
// div.removeChild(begin);
// }
// }
//}*/
if($(div).find("ul, ol, dl").length==0){
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
Numerowanie(element,tag,tekst);
}
}else if(tag=="LI"){
var div=document.createElement('div');
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
var czy_li=false;
for(var begin=div.firstChild;begin!=null;begin=begin.nextSibling){
if(begin.tagName!=null){
var tag_name=begin.tagName.toUpperCase();
if((!czy_li)&&((tag_name=="UL")||(tag_name=="OL"))){
czy_li=true;
}
if(czy_li){
div.removeChild(begin);
}
}
}
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
if(!tekst){if(j<=max_i_begin){++i_begin;};return;}
Numerowanie(element,tag,tekst);
}else if(tag=="CENTER"){
var div=document.createElement('div')
$(div).html($(element).html());
$(div).find('a.gadget-replylinks-reply').remove();
tekst=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(div).html())));
if(!tekst){if(j<=max_i_begin){++i_begin;};return;}
Numerowanie(element,tag,tekst);
}else if(tag=="A"){
FunkcjaZnacznikaP(element,true);
var editsection=$(element).parents('.mw-editsection').parents('.mw-heading');
if(editsection.length>0){if(j<=max_i_begin){++i_begin;};return;}
if($(element).hasClass('a.external')){if(j<=max_i_begin){++i_begin;};return;};
var div=document.createElement('div');
$(div).html(element.outerHTML);
$(div).find('a.gadget-replylinks-reply').remove();
var element_a=$(div).children('a').get(0);
if(!element_a){if(j<=max_i_begin){++i_begin;};return;};
var href=element_a.getAttribute("href");
if(href=="#"){if(j<=max_i_begin){++i_begin;};return;}
if(!href){href=""};
if(!$(element_a).hasClass('external')){
tab_href=DodatkiSkrypt.Szereg.Napis.UrojoneStrony(href);
href=tab_href.href;
var czy_edit=tab_href.edit;
if((namespace=="")||(namespace=="Wikijunior")){
if(/^([^\/]*)(\/)(.*)$/g.test(href)){
href=href.replace(/^([^\/]*)(\/)(.*)$/g,function(s,s1,s2,s3){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return s3;
}
return s;
});
}else{
if(((namespace!="")?(namespace+":"+bookname):bookname)==href){
href="";
}
}
console.log(href,"LLLLLLLLLLLLL");
}else if(namespace=="Wikibooks"){
href=href.replace(/^([Ww][Ii][Kk][Ii][Bb][Oo][Oo][Kk][Ss]:[Bb]rudnopis\/[^\/]*\/[^\/]*)\/(.*)$/g,function(s,s1,s2){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return s2;
}
return s;
});
href=href.replace(/^([Ww][Ii][Kk][Ii][Bb][Oo][Oo][Kk][Ss]:[Bb]rudnopis\/[^\/]*\/[^\/]*)$/g,function(s,s1){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return "";
}
return s;
});
}else if(namespace=="Wikipedysta"){
href=href.replace(/^([^\/]*\/[^\/]*)(\/)(.*)$/g,function(s,s1,s2,s3){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return s3;
}
return s;
});
href=href.replace(/^([^\/]*\/[^\/]*)$/g,function(s,s1){
if(s1==((namespace!="")?(namespace+":"+bookname):bookname)){
return "";
}
return s;
});
}
tekst=href;
}else{
tekst=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href,false);
}
var nazwa=$(element).html();
Numerowanie(element,tag,tekst,undefined,nazwa,czy_edit);
}else{
if(j<=max_i_begin){++i_begin;};
return;
};
})(element);
}
});
return [f,i_begin,j-1];
};
var liczba_json=LiczbaElementowaTablicowaJson();
var liczba_spis_tresci=0;
var UsuwaniePozostalosciSpisTresci=function(){
var css_id=$(id_numerowanie).find('.mw-numbering-main-page');
css_id=DodatkiSkrypt.Scribunto.StronicowyParser.FiltrujElementyRodzicaAleNiePod(id_numerowanie,css_id,false);
var strona_start_fun=new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode(id_numerowanie);
css_id=$(css_id).filter(function(i,element){
if(!strona_start_fun.CzyJestElementemPotomka(element)){
return true;
}
return false;
});
$(css_id).remove();
$(id_numerowanie).find('.css_numersubst').removeClass('css_numersubst');
}
if(liczba_json>0){
for(;;){
var [f,i_begin,j]=FunctionNumeracja(liczba_spis_tresci);
console.log(f,i_begin,j,"Licznik pominień",liczba_json);
return Promise.resolve();
if(j==liczba_json){
if(f>0){
liczba_spis_tresci+=i_begin+1;
UsuwaniePozostalosciSpisTresci();
}else{
return Promise.resolve();
};
}else{
UsuwaniePozostalosciSpisTresci();
return Promise.reject();
}
}
}
return Promise.reject();
}
this.UstawianieNumeracjiSpisuRzeczy=function(dane){
var firstheading=$('#firstHeading');
if($(firstheading).children("#mw-article-numbering").first().length==0){
var span=document.createElement('span');
$(span).html(dane+". ");
span.setAttribute("id","mw-article-numbering");
$(firstheading).contents().first().before(span);
}
}
this.NumerujRozdzialyArtykulu=function(element,artykul,aktualna_strona){
return promise_numerowanie.DodatkiSkryptThen(function(data){
var gadget_numerowanie=data[0];var gadget_numerowanie_normalne=data[1];var gadget_numerowanie_asynchroniczne=data[2];
if(!gadget_numerowanie){return;}
artykul=(artykul)?artykul:DodatkiSkrypt.Info.page.articlename;
aktualna_strona=(aktualna_strona)?aktualna_strona:DodatkiSkrypt.Info.page.fullname
var id_numerowanie=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element,true).first();
if(!gadget_numerowanie_normalne){
var promise=UstalanieZmiennychNumerowanie(aktualna_strona,id_numerowanie,function(data,aktualna_strona,id_numerowanie){
return this_zmienna.PreparujStronyJednostek(id_numerowanie,artykul,aktualna_strona,true).DodatkiSkryptThen(function([dane,czy_strona_zbiorcza_naprawde]){
if(czy_strona_zbiorcza_naprawde){
if((!dane)
||(($(id_numerowanie).hasClass('.rodzic_szablon_subst_js'))
||($(id_numerowanie).hasClass('.szablon_subst_js'))
||($(id_numerowanie).parents('.rodzic_szablon_subst_js, .szablon_subst_js').length>0)
)
){return Promise.resolve();}
this_zmienna.UstawianieNumeracjiSpisuRzeczy(dane);
return Promise.resolve();
}else{
return Promise.resolve();
}
});
});
return promise;
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"");
}
});
}
this.PreparujStronyJednostek=function(id_numerowanie,artykul,aktualna_strona,czy_bez_prefix){
aktualna_strona=aktualna_strona||DodatkiSkrypt.Info.page.fullbookname;
var namespace=DodatkiSkrypt.Nazwy.NAMESPACE(aktualna_strona);
var namespace=DodatkiSkrypt.Nazwy.Np(namespace,{"jaka":"kanoniczna",});
if((namespace!="")&&(namespace!="Wikijunior")){
if((namespace=="User")|(namespace=="Wikibooks")){
var namespacebook=DodatkiSkrypt.Nazwy.BOOKSPACENAME(aktualna_strona);
if(namespacebook==""){return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});};
}else if(/\stalk$/g.test(namespace)){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});;
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}
var artykul_parametr=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(artykul).replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"").replace(/[\s_]+/g," ");
var aktualna_strona_rozwazana=DodatkiSkrypt.Nazwy.FULLPAGENAME(aktualna_strona);
var aktualna_strona_parametr=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(aktualna_strona_rozwazana);
var czy_strona_numerowac="{{#invoke:StronicowyParser|CzyStronęNumerować|"+aktualna_strona_parametr+"}}";
var pelna_nazwa_artykulu="{{ArtykułSubst|pobierz pełną nazwę artykułu=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}";
var pelna_nazwa_ksiazki="{{ArtykułSubst|pobierz pełną nazwę książki=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}";
var przekierowanie_strony="{{#invoke:Techniczne|PrzekierowanieDoStrony|{{msg:PEŁNANAZWAKSIĄŻKI|"+aktualna_strona_parametr+"}}|wyspecjalizowana=tak}}";
var numer_naglowka="{{PobierzNumerNagłówka|{{msg:NAZWAARTYKUŁUKSIĄŻKI|bez dodatkowych sprawdzeń=tak}}|bez kategorii stronicowych=tak}}";
var numer_artykulu="{{PobierzNumerArtykułu|"+artykul_parametr+"|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki={{ArtykułSubst|pobierz pełną nazwę artykułu=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}|bez kategorii stronicowych=tak}}";
var czy_strona_subst="{{#invoke:StronicowyParser|CzyStronaSubst}}";
var czy_spis_tresci="{{#invoke:StronicowyParser|CzySpisTreści|artykuł="+artykul_parametr+"|wyspecjalizowana=tak}}";
var dane_ksiazki="{{#tag:nowiki|{{#invoke:Techniczne|EncodeParametr|{{#invoke:StronicowyParser|PobierzDaneKsiążki|spis="+artykul_parametr+"|nagłówek=tak|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki={{ArtykułSubst|pobierz pełną nazwę artykułu=tak|bez kategorii stronicowych=tak|bez dodatkowych sprawdzeń=tak}}|wyspecjalizowana=tak}}}}}}";
var nazwa_przestrzeni_ksiazki="{{NAZWAPRZESTRZENIKSIĄŻKI|bez dodatkowych sprawdzeń=tak}}";
var pelna_nazwa_ksiazki_artykulu="{{msg:PEŁNANAZWAKSIĄŻKI|"+aktualna_strona_parametr+"}}";
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(
'{{#if:'+czy_strona_numerowac+
'|{{#if:'+
'{{#ifeq:'+pelna_nazwa_artykulu+'|'+aktualna_strona_parametr+'|tak|'+
'{{#ifeq:'+pelna_nazwa_ksiazki+'|'+
'{{#if:'+przekierowanie_strony+
'|'+przekierowanie_strony+
'|'+pelna_nazwa_ksiazki_artykulu+
'}}|tak'+
'}}'+
'}}'+
'|{{#if:'+czy_strona_subst+
'|{{#switch:{{NAMESPACE}}'+
'||Wikijunior='+numer_naglowka+
'|{{Ns:User}}|{{Ns:Project}}={{#if:'+nazwa_przestrzeni_ksiazki+'|'+numer_naglowka+'}}'+
'}}'+
'|{{#if:'+czy_spis_tresci+
'|{{#switch:{{NAMESPACE}}'+
'||Wikijunior='+dane_ksiazki+
'|{{Ns:User}}|{{Ns:Project}}={{#if:'+nazwa_przestrzeni_ksiazki+'|'+dane_ksiazki+'}}'+
'}}'+
'|{{#switch:{{NAMESPACE}}'+
'||Wikijunior='+numer_artykulu+
'|{{Ns:User}}|{{Ns:Project}}={{#if:'+nazwa_przestrzeni_ksiazki+'|'+numer_artykulu+'}}'+
'}}'+
'}}'+
'}}'+
'|STRONASTART'+
'}}'+
'|nie'+
'}}',aktualna_strona_rozwazana,null,true,null,null,null,null,null,gadget_numerowanie_zapisz_dane_na_kliencie).DodatkiSkryptThen(function(data){
var dane=data.parse.text["*"];
if(dane==null){return ["",false];}else if(dane=="nie"){return ["",false];}
/**/
if(dane!="STRONASTART"){
if((dane!=null)&&(dane!="")&&(dane!="(błąd)")){
if((!/^[\[].*[\]]$/g.test(dane))&&(!/^[{].*[}]$/g.test(dane))){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,dane,czy_bez_prefix).DodatkiSkryptThen(function(){
var biezaca_strona_rozwazaca=DodatkiSkrypt.Nazwy.FULLPAGENAME(DodatkiSkrypt.Info.page.fullname);
var czy_zbiorcza_naprawde=(biezaca_strona_rozwazaca==aktualna_strona_rozwazana);
return [dane,czy_zbiorcza_naprawde];
});
}else{
dane=DodatkiSkrypt.Szereg.Tekst.Decode(dane);
var json=JSON.parse(dane);
if(json){
console.log(json,"SYSAS");
var artykul_spis_tresci=DodatkiSkrypt.Nazwy.ARTICLENAME(aktualna_strona);
var spis="Spis treści - "+artykul_spis_tresci;
var tab_spis=json[spis];
var numer_spisu_tresci;
if(tab_spis){
for(var p in tab_spis){
var dane_spisu=tab_spis[p][artykul_spis_tresci];
if(dane_spisu){
numer_spisu_tresci=p;
break;
}
}
}
if(numer_spisu_tresci){
this_zmienna.UstawianieNumeracjiSpisuRzeczy(numer_spisu_tresci);
}
return this_zmienna.NumerowanieStronGłównychPodręcznikowWedlugZebranychDanych(id_numerowanie,json,aktualna_strona).DodatkiSkryptThen(function(){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"");
}).DodatkiSkryptCatch(function(){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"");
}).DodatkiSkryptThen(function(){return ["",false]});
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}else{
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
}
}).DodatkiSkryptCatch(function(error){
return this_zmienna.NumerowanieNaglowkowStron(id_numerowanie,"").DodatkiSkryptThen(function(){return ["",false]});
});
return promise;
}
}
DymkiSubst.GadgetDymkiSubst=function(){
/**/
var dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych=undefined;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych=undefined;
var dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych=undefined;
/**/
var dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych=undefined;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych=undefined;
var dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych=undefined;
/**/
var dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var dymkisubst_dymki_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_dymkisubst){
czy_nie_gconfig_dymkisubst=true;
mw.messages.set({
'DymkiSubst-name': 'Dymki nad linkami inteligentymi',
'DymkiSubst-description-page': 'Wikibooks:StronicowyParser',
'DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych' : "Ustawia dymki, nad linkami, dla linków inteligentnych na stronach niezbiorczych.",
'DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych' : "Ustawia dymki, nad linkami, dla linków nieinteligentnych na stronach niezbiorczych.",
'DymkiSubst-dymki_asynchroniczne_na_stronach_niezbiorczych' : "Sprawdza, czy na stronie niezbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych' : "Ustawia dymki, nad linkami, dla linków inteligentnych na stronach zbiorczych.",
'DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych' : "Ustawia dymki, nad linkami, dla linków nieinteligentnych na stronach zbiorczych.",
'DymkiSubst-dymki_asynchroniczne_na_stronach_zbiorczych' : "Sprawdza, czy na stronie zbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.",
'DymkiSubst-dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'DymkiSubst-dymki_zapisz_dane_na_kliencie': 'Zapisuje dane, co do dymków na kliencie, ściagniete z serwera',
});
gConfig.register('DymkiSubst', {name: mw.msg('DymkiSubst-name'), descriptionPage: mw.msg('DymkiSubst-description-page')}, [
{
name: 'dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych']
},
{
name: 'dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych']
},
{
name: 'dymki_asynchroniczne_na_stronach_niezbiorczych',
desc: mw.msg('DymkiSubst-dymki_asynchroniczne_na_stronach_niezbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych']
},
{
name: 'dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych']
},
{
name: 'dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych',
desc: mw.msg('DymkiSubst-dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych']
},
{
name: 'dymki_asynchroniczne_na_stronach_zbiorczych',
desc: mw.msg('DymkiSubst-dymki_asynchroniczne_na_stronach_zbiorczych'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych']
},
{
name: 'dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('DymkiSubst-dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'dymki_zapisz_dane_na_kliencie',
desc: mw.msg('DymkiSubst-dymki_zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_dymkisubst_dymki_zapisz_dane_na_kliencie']
},
]);
}
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych')==true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych')==true);
dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych = (gConfig.get('DymkiSubst', 'dymki_asynchroniczne_na_stronach_niezbiorczych')==true);
/**/
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych')==true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych = (gConfig.get('DymkiSubst', 'dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych')==true);
dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych = (gConfig.get('DymkiSubst', 'dymki_asynchroniczne_na_stronach_niezbiorczych')==true);
/**/
dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('DymkiSubst', 'dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
dymkisubst_dymki_zapisz_dane_na_kliencie=(gConfig.get('DymkiSubst', 'dymki_zapisz_dane_na_kliencie')==true);
}
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych=((dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych:true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych=((dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych:true);
dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych=((dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych!==undefined)?dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych:true);
/**/
dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych=((dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych:true);
dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych=((dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych!==undefined)?dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych:true);
dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych=((dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych!==undefined)?dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych:true);
/**/
dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=((dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!==undefined)?dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true);
dymkisubst_dymki_zapisz_dane_na_kliencie=((dymkisubst_dymki_zapisz_dane_na_kliencie!==undefined)?dymkisubst_dymki_zapisz_dane_na_kliencie:false);
/**/
this.KodKomunikatuDymku=function(kod){
var tab_kody={
"su":true,
"sun":true,
"iw":true,
"inw":true,
"iwew":true,
"inwew":true,
"iew":true,
"inew":true,
"niw":true,
"ninw":true,
"niew":true,
"ninew":true,
"was":true,
"wasew":true,
"wash":true,
"washew":true,
"wasn":true,
"wasnew":true,
"ipw":true,
"inpw":true,
"dwni":true,
"sup":true,
"sunp":true,
"iwp":true,
"inwp":true,
"iwewp":true,
"inwewp":true,
"iewp":true,
"inewp":true,
"niwp":true,
"ninwp":true,
"niewp":true,
"ninewp":true,
"wasp":true,
"wasewp":true,
"washp":true,
"washewp":true,
"wasnp":true,
"wasnewp":true,
"ipwp":true,
"inpwp":true,
"dwnip":true,
}
return tab_kody[kod];
}
this.UstalanieZmiennychTworzeniaDymkowego=function(aktualna_strona,element){
var funkcja=function(){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
if(wikikod){
var dymkisubst_dymki_nad_linkami_inteligentnymi=dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_zbiorczych;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi=dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_zbiorczych;
var dymkisubst_dymki_asynchroniczne=dymkisubst_dymki_asynchroniczne_na_stronach_zbiorczych;
}else{
var dymkisubst_dymki_nad_linkami_inteligentnymi=dymkisubst_dymki_nad_linkami_inteligentnymi_na_stronach_niezbiorczych;
var dymkisubst_dymki_nad_linkami_nieinteligentnymi=dymkisubst_dymki_nad_linkami_nieinteligentnymi_na_stronach_niezbiorczych;
var dymkisubst_dymki_asynchroniczne=dymkisubst_dymki_asynchroniczne_na_stronach_niezbiorczych;
}
return Promise.resolve([dymkisubst_dymki_nad_linkami_inteligentnymi,dymkisubst_dymki_nad_linkami_nieinteligentnymi,dymkisubst_dymki_asynchroniczne]);
});
}
if(dymkisubst_dymki_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
return Promise.resolve([false,false,false]);
}
});
}else{
return funkcja();
}
};
var promise_dymki=this.UstalanieZmiennychTworzeniaDymkowego();
var tab_promise_dymki=new Array();
tab_promise_dymki.push(promise_dymki);
var this_zmienna=this;
//var tab_promise=new Array();
//this.CzekanieNaZwolnienieWszystkichKorutynWTabeliObietnicDymkiSubst=function(){
// return DodatkiSkrypt.CzekanieNaZwolnienieWszystkichKorutynWTabeliObietnic(tab_promise);
//}
var dymki_muteks=new DodatkiSkrypt.Muteks();
var dymki_projektowe_muteks=new DodatkiSkrypt.Muteks();
var UstalanieZmiennychDymkowe=function(aktualna_strona,element,funkcja){
var dymkisubst_dymki_nad_linkami_inteligentnymi;var dymkisubst_dymki_nad_linkami_nieinteligentnymi;var dymkisubst_dymki_asynchroniczne;
return promise_dymki.DodatkiSkryptThen(function(data){
dymkisubst_dymki_nad_linkami_inteligentnymi=data[0];dymkisubst_dymki_nad_linkami_nieinteligentnymi=data[1];dymkisubst_dymki_asynchroniczne=data[2];
if(dymkisubst_dymki_asynchroniczne){
if(aktualna_strona){
tab_promise_dymki.push(this_zmienna.UstalanieZmiennychTworzeniaDymkowego(aktualna_strona,element));
promise_dymki=tab_promise_dymki.at(-1);
return promise_dymki;
}
}
return data;
}).DodatkiSkryptThen(function(data){
return funkcja(data,aktualna_strona,element);
}).DodatkiSkryptFinally(function(data){
if(dymkisubst_dymki_asynchroniczne){
if(aktualna_strona){
tab_promise_dymki.pop();
promise_dymki=tab_promise_dymki.at(-1);
}
}
return data;
});
}
this.lineHeight=function(id){
var lineheight=window.getComputedStyle(id, null).lineHeight;
return parseFloat(lineheight);
}
/*Funkcja do wyświetlania komunikatów do [[Szablon:Link wewnętrzny]]*/
this.WyswietlKomunikatInfoKombajn=function(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,komunikat){
var body=document.querySelector('body');
if(body==null){return;}
var bodycontent = document.querySelector('#bodyContent');
if(bodycontent==null){return;}
this.UsunKomunikatInfo();
var div=document.createElement('div');
div.position="absolute";
//var element_id=id.getBoundingClientRect();
var left_real=event_clientX+window_scrollX-30;
var top_real=element_id_bottom+window_scrollY;
if(top_real<=0){return;}
//var wysokosclinii=this.lineHeight(id);
if((wysokosclinii==null)||(isNaN(wysokosclinii))||(wysokosclinii<=0)){return;};
var eY=event_clientY+window_scrollY;
for (var i=0;;++i){
var pomiedzy_gornym_a_dolnym_polozeniem_pod=i*wysokosclinii;
var pomiedzy_gornym_a_dolnym_polozeniem_nad=(i+1)*wysokosclinii;
var top_real_dolny=top_real-pomiedzy_gornym_a_dolnym_polozeniem_pod;
var top_real_gorny=top_real-pomiedzy_gornym_a_dolnym_polozeniem_nad;
if((top_real_dolny<0)||(top_real_gorny<0)){return;};
if(pomiedzy_gornym_a_dolnym_polozeniem_pod>id.offsetHeight){
top_real=top_real_dolny;
break;
}
if((eY<=top_real_dolny)&&(eY>=top_real_gorny)){
top_real=top_real_gorny;
break;
}
if((pomiedzy_gornym_a_dolnym_polozeniem_pod>id.offsetHeight)&&(pomiedzy_gornym_a_dolnym_polozeniem_nad>id.offsetHeight)){return;};
}
console.log(5)
var left_komunukat_main=parseInt(left_real);
var inset=5;
div.style.left=(left_komunukat_main>5)?((parseInt(left_real)).toString()+'px'):(inset+"px");
div.classList.add("dymkisubst_link_wewnętrzny_komunikatów");
div.setAttribute("id","dymkisubst_id_animacja_komunikatów");
$(div).html(komunikat);
var div_element=$(body).DodatkiSkryptAppend(div).get(0);
var div_komunikat=$(div_element).children().first();
var width=$(div_komunikat).get(0).offsetWidth;
var width_body=(window.visualViewport)?window.visualViewport["width"]:window.innerWidth;
var comp=window.getComputedStyle($(div_element).get(0),null);
var paddingleft=parseFloat(comp.getPropertyValue("padding-left"));
var paddingright=parseFloat(comp.getPropertyValue("padding-right"));
if(width+10>width_body){
$(div_komunikat).css('width',(width_body-inset*2-paddingleft-paddingright)+"px");
}
var top=parseInt(top_real-div_element.offsetHeight-3);
if(top<0){top=0;}
div.style.top=top.toString()+'px';
var rectbodycontent=bodycontent.getBoundingClientRect();
var leftbodycontent=rectbodycontent.left+window.scrollX;
var widthbodycontent=bodycontent.offsetWidth;
var id_komunikat_right=left_real+div_element.offsetWidth;
var marginesRight=1;
if(widthbodycontent+leftbodycontent<id_komunikat_right+marginesRight){
var roznica_offsetow=id_komunikat_right-widthbodycontent-leftbodycontent;
var left_div_element=parseInt(left_real-(roznica_offsetow)-marginesRight);
div_element.style.left=(left_div_element>5)?((left_div_element).toString()+'px'):(inset+"px");
}
var div_element_rect=div_element.getBoundingClientRect();
var left_real_id=event_clientX+window_scrollX;
var left_real_div=div_element_rect.left+window_scrollX;
var roz_left=left_real_id-left_real_div;
var div_el=document.createElement('div');
div_el.setAttribute('class',"dymkisubst_link_wewnętrzny_komunikatów_wskaźnik");
var div_el_dod=$(div_element).DodatkiSkryptAppend(div_el);
var left_komunikat=roz_left-9;
$(div_el_dod).css('left',(left_komunikat>0)?(left_komunikat+'px'):0);
}
this.UsunKomunikatInfo=function(id){
var body=document.querySelector('body');
if(body==null){return;}
var id_animation=$('#dymkisubst_id_animacja_komunikatów');
if(id_animation!==null){
$(id_animation).remove();
if(id){$(id).data('dymkisubst_poprawnie',true);}
}else{
var link_wewnetrzny_komunikatow=$('.dymkisubst_link_wewnętrzny_komunikatów');
if((link_wewnetrzny_komunikatow!==null)&&(link_wewnetrzny_komunikatow.length>0)){
$(link_wewnetrzny_komunikatow).remove();
if(id){$(id).data('dymkisubst_poprawnie',true);}
}else{
if(id){$(id).data('dymkisubst_poprawnie',false);}
}
}
}
this.PobierzKodElementuRodzicaA=function(element_a){
var span_element=$(element_a).parent().filter('span.link');
if($(span_element).length>0){
var parent_element_a=$(span_element).get(0);
}else{
var parent_element_a=$(element_a).filter('a.link').get(0);
}
if(parent_element_a==null){return null;};
var element_link=parent_element_a.classList;
if((element_link!==null)&&(element_link.length>0)){
for(var a=0;a<element_link.length;++a){
var kod=element_link[a];
if(kod!="link"){
var czy_tak=this.KodKomunikatuDymku(kod);
if(czy_tak){
return kod;
}
}
}
}
return null;
}
var ApiAbort=function(id,funkcja){
return function(api){
var api_fun=function(){
var id=this;
$(id).off("mouseout",api_fun);
$(id).data('dymkisubst_poprawnie',false);
api.abort();
DymkiSubst.gadgetdymkisubst.UsunKomunikatInfo(id);
if(funkcja){funkcja(id);};
}
$(id).off("mouseout",api_fun).on("mouseout",api_fun);
return function(id){
$(id).off("mouseout",api_fun);
};
}
}
this.WyswietlKomunikatInfo=function(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom){
var tab_promise=new Array();
var Komunikat=function(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,tekst_komunikat){
if(!$(id).data('dymkisubst_poprawnie')){
this_zmienna.UsunKomunikatInfo();
return;
}
var div=document.createElement('div');
$(div).html(tekst_komunikat);
var P=function(element){
var komunikat=$(element).find("p:first-child");
$(komunikat).css("margin-top","0");
var komunikat=$(element).find("p:last-child");
$(komunikat).css("margin-bottom","0");
}
P(div);
tekst_komunikat=$(div).html();
this_zmienna.WyswietlKomunikatInfoKombajn(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,tekst_komunikat);
}
this.UsunKomunikatInfo();
var kod=this.PobierzKodElementuRodzicaA(id);
if(kod===null){return;}
var old_href=id.getAttribute('old_href');
var href=id.getAttribute('href');
if(href===null){
href="";
}else{
href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href);
href=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(href);
}
if(old_href){
old_href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(old_href);
old_href=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(old_href);
}
var strona=DodatkiSkrypt.Info.page.fullname;
var wikikod=((old_href!==null)?('{{#invoke:Brudnopis/Persino/Dymki|UzyskajOpisOdParametrówLinku|'+kod+'|'+href+'|'+old_href+'}}'):('{{#invoke:Brudnopis/Persino/Dymki|UzyskajOpisOdParametrówLinku|'+kod+'|'+href+'}}'));
/**/
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(wikikod,strona,null,true,null,null,null,null,null,dymkisubst_dymki_zapisz_dane_na_kliencie,ApiAbort(id)).DodatkiSkryptThen(function(data){
var tekst_komunikat=data.parse.text['*'];
Komunikat(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom,tekst_komunikat);
}).DodatkiSkryptCatch((error) => {});
return promise;
}
this.UstawZdarzeniaKomunikatuInfo=function(rodzic,__muteks,aktualna_strona){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return UstalanieZmiennychDymkowe(aktualna_strona,rodzic,function(data,aktualna_strona,rodzic){
var dymkisubst_dymki_nad_linkami_inteligentnymi=data[0];var dymkisubst_dymki_nad_linkami_nieinteligentnymi=data[1];var dymkisubst_dymki_asynchroniczne=data[2];
if(!dymkisubst_dymki_nad_linkami_inteligentnymi){return;}
var klasa_link_wewnetrzny=$(rodzic).find('.link');
if($(klasa_link_wewnetrzny).length==0){return;};
klasa_link_wewnetrzny=DodatkiSkrypt.Scribunto.StronicowyParser.FiltrujElementyRodzicaAleNiePod(rodzic,klasa_link_wewnetrzny);
$(klasa_link_wewnetrzny).DodatkiSkryptEach(function(s,poszczegolna_klasa){
if($(poszczegolna_klasa).filter('span, a').length>0){
this_zmienna.UstawZdarzeniaKomunikatuElementuInfo(poszczegolna_klasa);
}
});
var __muteks=new DodatkiSkrypt.Muteks();
var tab_promise=new Array();
rodzic=DodatkiSkrypt.Scribunto.StronicowyParser.PoliczPodAleNiePodPodRodzica(rodzic);
$(rodzic).DodatkiSkryptEach(function(i,element_g){
var aktualna_strona=DodatkiSkrypt.Scribunto.StronicowyParser.AktualnaStronaElementuOpakowania(element_g);
tab_promise.push(this_zmienna.UstawZdarzeniaKomunikatuInfo(element_g,__muteks,aktualna_strona));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,__muteks||dymki_projektowe_muteks);
}
this.UruchomZdarzenieMouseOverDymkiInfo=function(event,id){
var element_id=id.getBoundingClientRect();
var wysokosclinii=this_zmienna.lineHeight(id);
var window_scrollX=window.scrollX;
var window_scrollY=window.scrollY;
var event_clientX=event.clientX;
var event_clientY=event.clientY;
var element_id_top=element_id.top;
var element_id_bottom=element_id.bottom;
/**/
var promise=$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
if($(id).data('dymkisubst_poprawnie')){
return DymkiSubst.gadgetdymkisubst.WyswietlKomunikatInfo(id,element_id,wysokosclinii,window_scrollX,window_scrollY,event_clientX,event_clientY,element_id_top,element_id_bottom);
}
},null,dymki_muteks);
}
this.UstawZdarzeniaKomunikatuElementuInfo=function(poszczegolna_klasa){
var this_zmienna=this;
var element_link=poszczegolna_klasa.classList;
if((element_link!==null)&&(element_link.length>0)){
for(var a=0;a<element_link.length;++a){
var kod=element_link[a];
if(kod!="link"){
if(this.KodKomunikatuDymku(kod)){
var nie_span_ale_a=$(poszczegolna_klasa).filter('a.link');
var a_tag=((nie_span_ale_a.length>0)?($(nie_span_ale_a)):($(poszczegolna_klasa).find('a')));
if(a_tag.first().get(0)!=null){
$(a_tag).on("mouseover",function(){
var id=this;
$(id).data('dymkisubst_poprawnie',true);
this_zmienna.UruchomZdarzenieMouseOverDymkiInfo(event,id);
});
$(a_tag).on("mouseout",function(){
var id=this;
$(id).data('dymkisubst_poprawnie',false);
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DymkiSubst.gadgetdymkisubst.UsunKomunikatInfo(id);
},null,dymki_muteks);
});
break;
}
}
}
}
}
}
this.UstawTagiIKlasyKomunikatuInfo=function(rodzic,__muteks,aktualna_strona){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return UstalanieZmiennychDymkowe(aktualna_strona,rodzic,function(data,aktualna_strona,rodzic){
var dymkisubst_dymki_nad_linkami_inteligentnymi=data[0];var dymkisubst_dymki_nad_linkami_nieinteligentnymi=data[1];var dymkisubst_dymki_asynchroniczne=data[2];
if(!dymkisubst_dymki_nad_linkami_nieinteligentnymi){return;}
var tab_promise=new Array();
var CzyNieRysunek=function(element){
if($(element).filter('mw-file-description').parent().filter("figure, span").filter("[typeof=\"mw:File\"]").length>0){return false;};
if($(element).has(' > img.mw-file-element').parent().filter("figure, span").filter("[typeof=\"mw:File\"]").length>0){return false;};
return true;
}
var NieLinkiReferencji=function(element){
if($(element).parent().hasClass('reference')){return false;};
return true;
}
var Czy_w_toc=function(element){
var toc=new Array("toc","toc_spis","toc_wykaz");
for(var a=0;a<toc.length;++a){
var toc_pos=$(rodzic).find("."+toc[a]);
if((toc_pos!==null)&&(toc_pos.length>0)){
for(var b=0;b<toc_pos.length;++b){
var element_toc=toc_pos[b];
var el=$(element_toc).find(element)
if($(el).length>0){
return false;
}
}
}
}
return true;
}
var TableMenu=function(element){
var tablemenu=$(rodzic).find("table.tablemenu");
if((tablemenu!==null)&&(tablemenu.length>0)){
for(var s=0;s<tablemenu.length;++s){
var el=$(tablemenu[s]).find(element);
if($(el).length>0){
return false;
}
}
}
return true;
}
var NaglowekDokumentacji=function(element){
var dokumentacja=$(rodzic).find(".template-documentation #doc_editlinks, #documentation-meta-data");
if((dokumentacja!==null)&&(dokumentacja.length>0)){
for(var s=0;s<dokumentacja.length;++s){
var el=$(dokumentacja[s]).find(element);
if($(el).length>0){
return false;
}
}
}
return true;
}
var CategoryTree=function(element){
var a_element=$(rodzic).find('.CategoryTreeTag').find(element);
if($(a_element).length>0){
return false;
}
return true;
}
var TrybCiemny=function(element){
var elem1=$(rodzic).find('.uruchom_tryb_ciemny').find(element);
var elem2=$(rodzic).find('.uruchom_tryb_jasny').find(element);
if(($(elem1).length>0)||($(elem2).length>0)){
return false;
}
return true;
}
var BezSzablonSubst=function(element){
var element_tag=$(rodzic).find('.rodzic_szablon_subst_js, .szablon_subst_js').find(element);
if($(element_tag).length>0){return false;}
return true;
}
var Thumb=function(element){
var thumb=$(rodzic).find('.thumb').find(element);
if($(thumb).length>0){
var caption=$(rodzic).find('.thumb .thumbcaption').find(element);
if($(caption).length>0){
return true;
}
return false;
}
return true;
}
var Audio=function(element){
var thumb=$(rodzic).find('.audio').find(element);
if($(thumb).length>0){
return false;
}
return true;
}
var Button=function(element){
var button=$(element).filter("[role=\"button\"]");
if($(button).length>0){
return false;
}
return true;
}
var elementy_a=$(rodzic).find('a');
if($(elementy_a).length==0){return;};
elementy_a=DodatkiSkrypt.Scribunto.StronicowyParser.FiltrujElementyRodzicaAleNiePod(rodzic,elementy_a);
var tab_outer_a=new Array();
$(elementy_a).DodatkiSkryptEach(function(a,element_a){
var href=element_a.getAttribute('old_href')||element_a.getAttribute('href');
if((((href!==null)&&(href!=""))||(($(element_a).hasClass('selflink'))&&($(element_a).hasClass('mw-selflink'))))&&(href!="#")&&($(element_a).html()!="")&&(!$ (element_a).hasClass('image'))){
if(!((href)&&(href.match(/^javascript:/g)))){
var linenos=$(element_a).find("span.linenos");
var tak=(((linenos===null)||(linenos.length==0))
&&(CzyNieRysunek(element_a))
&&(NieLinkiReferencji(element_a))
&&(Thumb(element_a))
&&(Audio(element_a))
&&(NaglowekDokumentacji(element_a))
&&(Czy_w_toc(element_a))
&&(TableMenu(element_a))
&&(CategoryTree(element_a))
&&(TrybCiemny(element_a))
&&(BezSzablonSubst(element_a))
&&(Button(element_a))
);
if(tak){
if($(element_a).parent().filter('span.link').length>0){
tak=false;
}else{
tak=true;
}
}
if(!tak){
return;
}
}else{
return;
}
}
(function(element_a){
//var element_a=tab_outer_a[a];
var LinkURL=function(wynik_link_wewnetrzny,element_a){
//var element_outer_a=tab_outer_a[numer_wywolania];
$(element_a).addClass("link");
$(element_a).addClass(wynik_link_wewnetrzny);
this_zmienna.UstawZdarzeniaKomunikatuElementuInfo(element_a);
return element_a;
}
var strona_href=element_a.getAttribute('old_href')||element_a.getAttribute('href');
strona_href=(((strona_href)&&(strona_href!=""))?strona_href:"")
if(strona_href!==""){
strona_href=strona_href.replace(/[_\s]+/g,"_");
strona_href=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona_href);
var strona=mw.config.get('wgPageName');
var FunDymkiSubstEvent=function(event){
var id=this;
//$(element_a).off("mouseover",FunDymkiSubstEvent);
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var poszczegolna_klasa;
return DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:Linki|UzyskajKodWikiLinku|strona="+strona_href+"|wyspecjalizowana=tak}}",strona,null,true,null,null,null,null,null,dymkisubst_dymki_zapisz_dane_na_kliencie,
ApiAbort(id,function(id){
//$(id).off("mouseover",FunDymkiSubstEvent).on("mouseover",FunDymkiSubstEvent);
})).DodatkiSkryptThen(function(data){
$(id).off("mouseover",FunDymkiSubstEvent);
var wynik_linkURL=data.parse.text['*'];
var poszczegolna_klasa=LinkURL(wynik_linkURL,element_a);
$(id).data('dymkisubst_poprawnie',true);
this_zmienna.UruchomZdarzenieMouseOverDymkiInfo(event,id);
console.log("TYTAn124543336457")
/**/
}).DodatkiSkryptCatch((error) => {});
},null,dymki_muteks);
}
$(element_a).off("mouseover",FunDymkiSubstEvent).on("mouseover",FunDymkiSubstEvent);
}
})(element_a);
});
var __muteks=new DodatkiSkrypt.Muteks();
var tab_promise=new Array();
rodzic=DodatkiSkrypt.Scribunto.StronicowyParser.PoliczPodAleNiePodPodRodzica(rodzic);
$(rodzic).DodatkiSkryptEach(function(i,element_g){
var aktualna_strona=DodatkiSkrypt.Scribunto.StronicowyParser.AktualnaStronaElementuOpakowania(element_g);
tab_promise.push(this_zmienna.UstawZdarzeniaKomunikatuInfo(element_g,__muteks,aktualna_strona));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,__muteks||dymki_projektowe_muteks);
}
}
SzablonSubst.SzablonSubst=function(){
var szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej=undefined;
var szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej=undefined;
/**/
var szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej=undefined;
var szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej=undefined;
/**/
var szablonsubst_nie_uwzgledniaj_edycji_sekcji=undefined;
var szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var szablonsubst_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_szablonsubst){
czy_nie_gconfig_szablonsubst=true;
mw.messages.set({
'SzablonSubst-name': 'Rozwijanie szablonów',
'SzablonSubst-description-page': 'Wikibooks:StronicowyParser/SzablonSubst',
'SzablonSubst-nie_uwzgledniaj_edycji_sekcji': 'Wyłącz możliwość edycji sekcji w artykułach.',
'SzablonSubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej': 'Włącz rozwijanie szablonów, w JavaScript, nie na stronie zbiorczej.',
'SzablonSubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej': 'Sprawdza, czy na stronie niezbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.',
'SzablonSubst-rozwijanie_szablonow_na_stronie_zbiorczej': 'Włącz rozwijanie szablonów, w JavaScript, na stronie zbiorczej.',
'SzablonSubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej': 'Sprawdza, czy na stronie zbiorczej, występuje strona zbiorcza, czy nie, i na podstawie tego ustawia odpowiednie parametry.',
'SzablonSubst-rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'SzablonSubst-zapisz_dane_na_kliencie':'Zapisuje dane uzyskane z ładowanych stron ze serwerana klienta',
});
gConfig.register('SzablonSubst', {name: mw.msg('SzablonSubst-name'), descriptionPage: mw.msg('SzablonSubst-description-page')}, [
{
name: 'nie_uwzgledniaj_edycji_sekcji',
desc: mw.msg('SzablonSubst-nie_uwzgledniaj_edycji_sekcji'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-nie_uwzgledniaj_edycji_sekcji']
},
{
name: 'rozwijanie_szablonow_nie_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej']
},
{
name: 'rozwijanie-szablonow_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'zapisz_dane_na_kliencie',
desc: mw.msg('SzablonSubst-zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_szablonsubst-zapisz_dane_na_kliencie']
},
]);
}
szablonsubst_nie_uwzgledniaj_edycji_sekcji = (gConfig.get('SzablonSubst', 'nie_uwzgledniaj_edycji_sekcji')==true);
szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_nie_na_stronie_zbiorczej')==true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej')==true);
/**/
szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_na_stronie_zbiorczej')==true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej')==true);
/**/
szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
szablonsubst_zapisz_dane_na_kliencie=(gConfig.get('SzablonSubst', 'zapisz_dane_na_kliencie')==true);
}
szablonsubst_nie_uwzgledniaj_edycji_sekcji=((szablonsubst_nie_uwzgledniaj_edycji_sekcji!=undefined)?szablonsubst_nie_uwzgledniaj_edycji_sekcji:false);
szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej:true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej:true);
/**/
szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej:true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej:true);
/**/
szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:false);
szablonsubst_zapisz_dane_na_kliencie=((szablonsubst_zapisz_dane_na_kliencie!=undefined)?szablonsubst_zapisz_dane_na_kliencie:false);
/**/
this.UstalanieZmiennychRozwijaniaSzablonowego=function(aktualna_strona,element){
var funkcja=function(){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
if(wikikod){
var szablonsubst_rozwijanie_szablonow=szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej;
var szablonsubst_rozwijanie_szablonow_asynchroniczne=szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej
}else{
var szablonsubst_rozwijanie_szablonow=szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej;
var szablonsubst_rozwijanie_szablonow_asynchroniczne=szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej;
}
return Promise.resolve([szablonsubst_rozwijanie_szablonow,szablonsubst_rozwijanie_szablonow_asynchroniczne]);
});
}
if(szablonsubst_rozwijanie_szablonow_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
return Promise.resolve([false,false,false]);
}
});
}else{
return funkcja();
}
}
var promise_szablon=this.UstalanieZmiennychRozwijaniaSzablonowego();
var tab_promise_szablon=new Array();
tab_promise_szablon.push(promise_szablon);
var this_zmienna=this;
var UstalanieZmiennychSzablonowe=function(aktualna_strona,element,funkcja){
var szablonsubst_rozwijanie_szablonow;var szablonsubst_rozwijanie_szablonow_asynchroniczne;
return promise_szablon.DodatkiSkryptThen(function(data){
szablonsubst_rozwijanie_szablonow=data[0];szablonsubst_rozwijanie_szablonow_asynchroniczne=data[1];
if(szablonsubst_rozwijanie_szablonow_asynchroniczne){
if(aktualna_strona){
tab_promise_szablon.push(this_zmienna.UstalanieZmiennychRozwijaniaSzablonowego(aktualna_strona,element));
promise_szablon=tab_promise_szablon.at(-1);
return promise_szablon;
}
}
return data;
}).DodatkiSkryptThen(function(data){
return funkcja(data,aktualna_strona,element);
}).DodatkiSkryptFinally(function(){
if(szablonsubst_rozwijanie_szablonow_asynchroniczne){
if(aktualna_strona){
tab_promise_szablon.pop();
promise_szablon=tab_promise_szablon.at(-1);
}
}
});
}
var tab_num=new Array();
this.PobierzSzablon=function(element,nazwa,czy_numerowac,aktualna_strona){
element=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element);
var PobierzSzablon=function(element,nazwa,czy_numerowac){
return UstalanieZmiennychSzablonowe(aktualna_strona,element,function(data,aktualna_strona,element){
var szablonsubst_rozwijanie_szablonow=data[0];var szablonsubst_rozwijanie_szablonow_asynchroniczne=data[1];
var tab_promise=new Array();
if(!szablonsubst_rozwijanie_szablonow){return Promise.resolve($());}
if(czy_numerowac==undefined){czy_numerowac=true;}
var szablon_js;
if(!element){
szablon_js=DodatkiSkrypt.Szereg.Styl.ElementRodzic('.szablon_subst_js');
}else{
szablon_js=$(element).find('.szablon_subst_js');
}
var rodzic_szablon_subst_js=$(szablon_js).parent().filter('.rodzic_szablon_subst_js');
if(rodzic_szablon_subst_js.length==0){
rodzic_szablon_subst_js=$(szablon_js).filter('.szablon_subst_js');
}
if((szablon_js!==null)&&(szablon_js.length>0)){
for(var p=0;p<szablon_js.length;++p){
var element=szablon_js[p];
var potomek=((element)?($('.szablon_subst_js').find(element)):element);
if((potomek===null)||(potomek.length==0)){
var strona_szablon_js=undefined;
var nazwa_strony=$(element).parent().first()[0].querySelector('.nazwa_strony');
if(nazwa_strony){
strona_szablon_js=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(nazwa_strony).html())));
if(/^[_\s]*$/g.test(strona_szablon_js)){
strona_szablon_js=undefined;
}
}
if(!strona_szablon_js){
strona_szablon_js=((nazwa)?nazwa:(DodatkiSkrypt.Info.page.fullname));
}
var zawartosc;
var wzor_element=$(element).children("*");
if((wzor_element!==null)&&(wzor_element.length>0)){
zawartosc=$(element).html();
for(var i=0;i<wzor_element.length;++i){
var math=wzor_element[i].outerHTML;
var math_temp=math;
math=math.replace(/[\{\}\=\|]/g,function(s){
var tab={
"{":"{{(}}",
"}":"{{)}}",
"=":"{{=}}",
"|":"{{!}}"
};
return tab[s]||s;
}).replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/\//g,"&#47;");
math_temp=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(math_temp);
var re=new RegExp(math_temp,"g");
zawartosc=zawartosc.replace(re,math);
}
}else{
zawartosc=$(element).html();
}
var grupa=zawartosc.match(/\|\s*grupa\s*=\s*[^\|\{\}<>]+/g);
if(grupa!==null){
var grupa_temp=grupa.toString();
var grupa_temp2=grupa_temp;
grupa_temp=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(grupa_temp);
var re=new RegExp(grupa_temp,"g");
grupa=grupa.toString().replace(/\|\s*grupa\s*=\s*/g,"").replace(/^\s*/g,"").replace(/\s*$/g,"");
tab_num[grupa]=((tab_num[grupa])?tab_num[grupa]:0)+1;
zawartosc=zawartosc.replace(re,grupa_temp2+"|numer szablonu="+tab_num[grupa]);
}
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(((szablonsubst_nie_uwzgledniaj_edycji_sekcji)?("__NOEDITSECTION__\n"):"\n")+zawartosc,strona_szablon_js,null,true,p,false,true,null,null,szablonsubst_zapisz_dane_na_kliencie).DodatkiSkryptThen(function(data){
var wikikod=data.parse.text['*'];
var title=data.parse.title;
var number=data.parse.text.number;
wikikod=wikikod.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&#47;/g,"/");
var parent_szablon_js=szablon_js[number].parentNode;
var element_div;
if($(parent_szablon_js).hasClass('rodzic_szablon_subst_js')){
element_div=parent_szablon_js;
}else{
element_div=szablon_js[number];
}
$(element_div).html(wikikod);
element_div.setAttribute('nazwa_strony',title);
element_div.classList.add('szablon_subst_js_zanalizowany');
return PobierzSzablon(element_div,nazwa,czy_numerowac);
}).DodatkiSkryptCatch(function(error){});
tab_promise.push(promise);
}
}
}
return Promise.DodatkiSkryptAll(tab_promise).DodatkiSkryptThen(function(tab_rodzic_szablon_subst_js){
tab_rodzic_szablon_subst_js.forEach(function(rodzic_szablon_subst_js_2){
if(rodzic_szablon_subst_js_2){
rodzic_szablon_subst_js=DodatkiSkrypt.DodatkiSkryptJQuery(rodzic_szablon_subst_js,rodzic_szablon_subst_js_2);
}
});
return rodzic_szablon_subst_js;
});
});
}
return PobierzSzablon(element,nazwa,czy_numerowac).DodatkiSkryptThen(function(rodzic_szablon_subst_js){
return rodzic_szablon_subst_js;
});
}
this.PobierzSzablonyStronyNieZbiorczej=function(){
//return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](StronaSubst,new Array("analiza_stron_zbiorczych")).DodatkiSkryptThen(function(){
var id_strony=$(DodatkiSkrypt.Szereg.IdCSS(1)).first();
if(id_strony.length>0){
var muteks=new DodatkiSkrypt.Muteks();
return StronaSubst.analiza_stron_zbiorczych.AnalizujDalejSzablonSubst(id_strony[0],muteks);
}
}).DodatkiSkryptCatch(function(){});
//});
}
}
StronaSubst.WyswietlStronyKsiazki=function(){
var stronasubst_latex=undefined;
var stronasubst_mathml=undefined;
var stronasubst_opakuj_kategorie_ze_sortowaniem=undefined;
var stronasubst_przytnij_tekst=undefined;
var stronasubst_ukrywaj_toc=undefined;
var stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach=undefined;
var stronasubst_numerowanie_poszczegolnych_rozdzialow=undefined;
var stronasubst_aktualizowanie_nazw_artykulow=undefined;
var stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami=undefined;
var stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika=undefined;
var stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej=undefined;
var stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule=undefined;
var stronasubst_nie_usuwaj_styli=undefined;
var stronasubst_naprawiaj_naglowki=undefined;
var stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst=undefined;
/**/
var stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=undefined;
var stronasubst_zapisz_dane_na_kliencie=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_stronasubst){
czy_nie_gconfig_stronasubst=true;
mw.messages.set({
'StronaSubst-name': 'Strona zbiorcza',
'StronaSubst-description-page': 'Wikibooks:StronicowyParser',
'StronaSubst-latex': 'Wstaw tekst latexowy wzorów matematycznych, w przeciwnym przypadku jest on w formie obrazków.',
'StronaSubst-mathml': 'Wstaw wzory matematyczne w formie znaczników HTML w postaci MathML.',
'StronaSubst-opakuj_kategorie_ze_sortowaniem' : 'W stronach zbiorczych opakowuje kategorie dla każdej strony, w postaci ramki.',
'StronaSubst-przytnij_tekst' : 'W stronach zbiorczych włącza ucinanie artykułu z początku i końca ze zbędnych białych znaków.',
'StronaSubst-ukrywaj_toc' : "Ukrywa, począwszy od jakiegoś poziomu wszystkich elementów spisów treści, na stronach zbiorczych.",
'StronaSubst-dymki_nad_linkami_w_ladowanych_dynamicznie_stronach' : "Włącza dymki, nad linkami, w ładowanych dynamicznie stronach, tworząc je inteligentnymi.",
'StronaSubst-numerowanie_poszczegolnych_rozdzialow': 'Włącz numerowanie poszczególnych rozdziałów',
'StronaSubst-aktualizowanie_nazw_artykulow' : 'Aktualizuje, w postaci linków, na podstawie spisów treści nazwy artykułów bez nagłówków.',
'StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami' : "Aktualizuje sekcje poszczegónych rozdziałów, według artykułów z nagłówkami, podręcznika ładowanych rozdziałami, w postaci linków.",
'StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika' : 'Aktualizuje, na podstawie tego ostatniego przed nim ustawienia na tak, sekcje poszczegónych rozdziałów artykułów, z nagłówkami, podręcznika ładowanych rozdziałami, w postaci linków, według spisów treści podręcznika, w przeciwnym wypadku według artykułów.',
'StronaSubst-aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule' : 'Aktualizuje, na podstawie tego przedostatniego i ostatniego, przed nim ustawienia na tak, elementy sekcji rozdziałów ładowanych rozdziałami artykułów, z nagłówkami, według spisów treści, w postaci linków, nawet wtedy, gdy one tam nie istnieją.',
'StronaSubst-aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej' : 'Aktualizuje nagłówki, nieartykularne, strony głównej podręcznika na stronie zbiorczej.',
'StronaSubst-nie_usuwaj_styli' : 'Nie usuwa styli z nagłówków ładowanych stron.',
'StronaSubst-naprawiaj_naglowki' : 'Naprawia nagłówki strony.',
'StronaSubst-rozwijaj_szablony_oznaczone_szablonem_szablonsubst' : 'Rozwijaj szablony oznaczone szablonem SzablonSubst.',
'StronaSubst-uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom tylko dla stron ładowanych na głównej stronie zbiorczej',
'StronaSubst-uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej': 'Uruchom, ramkę postępu ładowania stron, tylko dla stron ładowanych na głównej stronie zbiorczej',
'StronaSubst-zapisz_dane_na_kliencie': 'Ściągnięte dane zapisujena kliencie, by później mieć do nich szybszy dostęp',
});
gConfig.register('StronaSubst', {name: mw.msg('StronaSubst-name'), descriptionPage: mw.msg('StronaSubst-description-page')}, [
{
name: 'latex',
desc: mw.msg('StronaSubst-latex'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_latex']
},
{
name: 'mathml',
desc: mw.msg('StronaSubst-mathml'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_mathml']
},
{
name: 'opakuj_kategorie_ze_sortowaniem',
desc: mw.msg('StronaSubst-opakuj_kategorie_ze_sortowaniem'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_opakuj_kategorie_ze_sortowaniem']
},
{
name: 'przytnij_tekst',
desc: mw.msg('StronaSubst-przytnij_tekst'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_przytnij_tekst']
},
{
name: 'ukrywaj_toc',
desc: mw.msg('StronaSubst-ukrywaj_toc'),
type: 'integer',
deflt: 0,
validation: function(n){ if((n<0)||(n==1)){ throw 'Wartość dotycząca poziomu ukrywania spisów treści jest nieprawidłowa!' }; return n; },
legacy: [window, 'wb_stronasubst_ukrywaj_toc']
},
{
name: 'dymki_nad_linkami_w_ladowanych_dynamicznie_stronach',
desc: mw.msg('StronaSubst-dymki_nad_linkami_w_ladowanych_dynamicznie_stronach'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach']
},
{
name: 'numerowanie_poszczegolnych_rozdzialow',
desc: mw.msg('StronaSubst-numerowanie_poszczegolnych_rozdzialow'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_numerowanie_poszczegolnych_rozdzialow']
},
{
name: 'aktualizowanie_nazw_artykulow',
desc: mw.msg('StronaSubst-aktualizowanie_nazw_artykulow'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_aktualizowanie_nazw_artykulow']
},
{
name: 'aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami',
desc: mw.msg('StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami']
},
{
name: 'aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika',
desc: mw.msg('StronaSubst-aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika']
},
{
name: 'aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule',
desc: mw.msg('StronaSubst-aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule']
},
{
name: 'aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej',
desc: mw.msg('StronaSubst-aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej']
},
{
name: 'nie_usuwaj_styli',
desc: mw.msg('StronaSubst-nie_usuwaj_styli'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_nie_usuwaj_styli']
},
{
name: 'naprawiaj_naglowki',
desc: mw.msg('StronaSubst-naprawiaj_naglowki'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_naprawiaj_naglowki']
},
{
name: 'rozwijaj_szablony_oznaczone_szablonem_szablonsubst',
desc: mw.msg('StronaSubst-rozwijaj_szablony_oznaczone_szablonem_szablonsubst'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst']
},
{
name: 'uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('StronaSubst-uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej',
desc: mw.msg('StronaSubst-uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej']
},
{
name: 'zapisz_dane_na_kliencie',
desc: mw.msg('StronaSubst-zapisz_dane_na_kliencie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_stronasubst_zapisz_dane_na_kliencie']
},
]);
}
stronasubst_latex = (gConfig.get('StronaSubst', 'latex')==true);
stronasubst_mathml = (((gConfig.get('StronaSubst', 'mathml'))&&(!stronasubst_latex))==true);
stronasubst_opakuj_kategorie_ze_sortowaniem = (gConfig.get('StronaSubst', 'opakuj_kategorie_ze_sortowaniem')==true);
stronasubst_przytnij_tekst = (gConfig.get('StronaSubst', 'przytnij_tekst')==true);
stronasubst_ukrywaj_toc = gConfig.get('StronaSubst', 'ukrywaj_toc');
stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach = gConfig.get('StronaSubst', 'dymki_nad_linkami_w_ladowanych_dynamicznie_stronach');
stronasubst_numerowanie_poszczegolnych_rozdzialow = gConfig.get('StronaSubst', 'numerowanie_poszczegolnych_rozdzialow');
stronasubst_aktualizowanie_nazw_artykulow = (gConfig.get('StronaSubst', 'aktualizowanie_nazw_artykulow')==true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami = (gConfig.get('StronaSubst', 'aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami')==true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika = (gConfig.get('StronaSubst','aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika')==true);
stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej = (gConfig.get('StronaSubst','aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej')==true);
stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule = (gConfig.get('StronaSubst','aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule')==true);
stronasubst_nie_usuwaj_styli = (gConfig.get('StronaSubst','nie_usuwaj_styli')==true);
stronasubst_naprawiaj_naglowki = (gConfig.get('StronaSubst','naprawiaj_naglowki')==true);
stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst = (gConfig.get('StronaSubst','rozwijaj_szablony_oznaczone_szablonem_szablonsubst')==true);
stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('StronaSubst','uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej = (gConfig.get('StronaSubst','uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej')==true);
stronasubst_zapisz_dane_na_kliencie = (gConfig.get('StronaSubst','zapisz_dane_na_kliencie')==true);
}
//var podglad=document.querySelector('body:not(.action)');
//if(podglad){return;}
var stronasubst_tablica_tych_samych=new Array();
var stronasubst_tablica_rozdzialow=new Array();
var stronasubst_tablica_alternatywnych_nazw=new Array();
stronasubst_latex=((stronasubst_latex!==undefined)?stronasubst_latex:false);
stronasubst_mathml=((stronasubst_mathml!==undefined)?stronasubst_mathml:true);
stronasubst_opakuj_kategorie_ze_sortowaniem=((stronasubst_opakuj_kategorie_ze_sortowaniem!==undefined)?stronasubst_opakuj_kategorie_ze_sortowaniem:false);
stronasubst_przytnij_tekst=((stronasubst_przytnij_tekst!==undefined)?stronasubst_przytnij_tekst:true);
stronasubst_ukrywaj_toc=parseInt(((stronasubst_ukrywaj_toc!==undefined)?stronasubst_ukrywaj_toc:0));
stronasubst_ukrywaj_toc=((!isNaN(stronasubst_ukrywaj_toc))?stronasubst_ukrywaj_toc:0);
stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach=((stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach!==undefined)?stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach:true);
stronasubst_numerowanie_poszczegolnych_rozdzialow=((stronasubst_numerowanie_poszczegolnych_rozdzialow!==undefined)?stronasubst_numerowanie_poszczegolnych_rozdzialow:true);
stronasubst_aktualizowanie_nazw_artykulow=((stronasubst_aktualizowanie_nazw_artykulow!==undefined)?stronasubst_aktualizowanie_nazw_artykulow:true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami=((stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami!==undefined)?stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami:true);
stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika=((stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika!==undefined)?stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika:false);
stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej=((stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej!==undefined)?stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej:true);
stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule=((stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule!==undefined)?stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule:false);
stronasubst_nie_usuwaj_styli=((stronasubst_nie_usuwaj_styli!==undefined)?stronasubst_nie_usuwaj_styli:true);
stronasubst_naprawiaj_naglowki=((stronasubst_naprawiaj_naglowki!==undefined)?stronasubst_naprawiaj_naglowki:false);
stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst=((stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst!==undefined)?stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst:true);
/**/
stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!=undefined)?stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true;
/**/
stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej=(stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej!=undefined)?stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej:true;
stronasubst_zapisz_dane_na_kliencie=(stronasubst_zapisz_dane_na_kliencie!=undefined)?stronasubst_zapisz_dane_na_kliencie:false;
/**/
var this_zmienna=this;
var NiePobranaStronaLubNieIstnieje=function(title,strona_hash,elements,muteks_stronasubst){
var tab_promise=new Array();
var a=document.createElement('a');/*Tworzenie linku*/
a.setAttribute('href',"/wiki/"+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(title));
$(a).html(strona_hash);
var subtitle=DodatkiSkrypt.Szereg.Napis.SubTitle(strona_hash)
var span=document.createElement('span');
$(span).append(a);
span.setAttribute("class","niw link");
var strong=document.createElement("strong");
$(strong).append(span);
var przed=document.createTextNode("{{:");
var po=document.createTextNode("}}");
$(span).before(przed);
$(strong).append(po);
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
for(var q in elements){
(function(q){
var element=elements[q];
$(element).html("");
$(element).append(strong);
$(element).css('display',"block");
var parent=element.parentNode;
if((parent!==null)&&(parent.tagName.toUpperCase()=="DIV")){
parent.style.display="block";
}
var pasek=element.parentNode.querySelector('.postęp_ładowania_artykułu');
if(pasek!==null){
element.parentNode.removeChild(pasek);
}
$(element).filter('.strona_subst').addClass("strona_subst_zanalizowane");
$(element).filter('.strona_subst').parent(".rozdział_książki").children('.mw-heading').children(hn).not(toc_h).attr("id_podstrona",subtitle);
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks));
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks));
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_stronasubst));
})(q);
}
return Promise.DodatkiSkryptAll(tab_promise);
}
var WikikodTitle=function(data,tabs,titles,tabstrona,muteks_stronasubst,tablica_przednaglowkowa_html,stronasubst_latex,stronasubst_mathml){
var title=data.parse.title;
var wikikod=data.parse.text['*'];
var t=data.parse.text.number;
var strona_hash=titles[t];
var elements=tabstrona[strona_hash];
if(wikikod==null){
return NiePobranaStronaLubNieIstnieje(title,strona_hash,elements,muteks_stronasubst);
}
var tab_promise_fun=new Array();
//var tab_promise=new Array();
for(var q in elements){
var element=elements[q];
$(element).parent().children(".postęp_ładowania_artykułu").remove();
$(element).css('display','block');
$(element).html(wikikod);
(function(element,title,titles){
tab_promise_fun.push(function(){return this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(element);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.ZamienianeAdresoweLinkoweReferencjiByByłyWskazywalneDoStronyAktualnej(element,title,titles);});
})(element,title,titles);
}
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);});
(function(elements,tabs,strona_hash,tablica_przednaglowkowa_html,stronasubst_tablica_alternatywnych_nazw,stronasubst_tablica_tych_samych,stronasubst_tablica_rozdzialow,stronasubst_latex,stronasubst_mathml){
tab_promise_fun.push(function(){
return DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(elements,tabs,strona_hash,tablica_przednaglowkowa_html,stronasubst_tablica_alternatywnych_nazw,stronasubst_tablica_tych_samych,stronasubst_tablica_rozdzialow,true,stronasubst_latex,stronasubst_mathml);
});
})(elements,tabs,strona_hash,tablica_przednaglowkowa_html,stronasubst_tablica_alternatywnych_nazw,stronasubst_tablica_tych_samych,stronasubst_tablica_rozdzialow,stronasubst_latex,stronasubst_mathml);
tab_promise_fun.push(function(){return DodatkiSkrypt.Nawigacja.createCollapseButtons(elements);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Nawigacja.createNavigationBarToggleButton(elements);});
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Strona.OdkywanieSpisuMateriiTOC();
//},null,muteks_stronasubst));
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Boksy.StickyXY();
//},null,muteks_stronasubst));
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Boksy.NotOverflowXY();
//},null,muteks_stronasubst));
/**/
if(stronasubst_numerowanie_poszczegolnych_rozdzialow){
for(var q in elements){
var element=elements[q];
(function(element){
var str_fun=$(element).parent().find("> div.mw-heading").first().find(" > span.numeracja");
if(str_fun.length>0){
var numer=$(str_fun[0]).html();
numer=DodatkiSkrypt.Szereg.ZmienianieKodoweZnakoweSpecjalnePrzezOdpowiednieZnaki(numer).replace(/\.$/g,"");
tab_promise_fun.push(function(){return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](NumerSubst,new Array("numer")).DodatkiSkryptThen(function(){
return NumerSubst.numer.NumerowanieNaglowkowStron(element,numer,true);
});
});
}
})(element);
}
}
//var strona_start=$(elements[0]).parents(".strona_start, .rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .artykułsubst");
//var rodzic=undefined;
//if((strona_start!==null)&&(strona_start.length>0)){
// rodzic=strona_start.get(0);
//}
/**/
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
//},null,muteks_stronasubst));
/**/
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);});
/**/
for(var q in elements){
var element=elements[q];
(function(element){
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.QuizIframe(element,title);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.PoprawianieNapisoweNumeruWprowadzeniaTekstu(element);});
tab_promise_fun.push(function(){return DodatkiSkrypt.Strona.ZmienianieNazwReferencjiNaNazwyProjektuWoluminu(element);});
if(stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach){
tab_promise_fun.push(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var muteks=new DodatkiSkrypt.Muteks();
var tab_promise_fun=new Array();
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks,strona_hash);});
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks,strona_hash);});
return DodatkiSkrypt.PoKoleiRozmieszczanieKorutyn(undefined,undefined,tab_promise_fun);
});
});
}
if(stronasubst_rozwijaj_szablony_oznaczone_szablonem_szablonsubst){
tab_promise_fun.push(function(){
var muteks_szablon=new DodatkiSkrypt.Muteks();
return this_zmienna.AnalizujDalejSzablonSubst(element,muteks_szablon,strona_hash);
});
}
})(element);
}
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.PoKoleiRozmieszczanieKorutyn(undefined,undefined,tab_promise_fun);
},null,muteks_stronasubst);
}
var StronaSubstAnaliza=function(element_strony,wikikod,aktualna_strona,muteks_stronasubst){
var czy_wikikod=wikikod.match(/^[_\s]*$/g);
var strona_start=DodatkiSkrypt.Szereg.Styl.ElementRodzic('.strona_start');
if(czy_wikikod){
return;
}
var toc_h=DodatkiSkrypt.Szereg.Styl.TocHn();
var hn=DodatkiSkrypt.Szereg.Styl.Hn();
var heading=DodatkiSkrypt.Szereg.Styl.HeadingHn();
element_strony=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element_strony);
var tab_promise=new Array();
var element_strony_przed=$(element_strony).find(hn).not(toc_h);
var element_parser=$(element_strony_przed).parents(DodatkiSkrypt.Szereg.IdCSS(1));
var tablica_przednaglowkowa_html=new Array();
(function(){
for (mw_parser_output of element_parser){
var iterator=DodatkiSkrypt.Szereg.Html.IteratorPotomkowyPoElemencieHtml(mw_parser_output,true);
while(true){
var element_html=iterator();
if(!element_html){break;}
if($(element_strony_przed).filter(element_html).length>0){return;};
var tagname=element_html.tagName;
var czy_headline=((tagname)&&(tagname.match(/^H\d+$/g)));
if(czy_headline){
var tekst_bez_stylow_bez_numeracji=DodatkiSkrypt.Szereg.Napis.KodHTMLProwadzeniaTekstu(element_html);
var tekst_bez_stylow=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(tekst_bez_stylow_bez_numeracji));
var id=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(tekst_bez_stylow);
/**/
tablica_przednaglowkowa_html[id]=(tablica_przednaglowkowa_html[id]||0)+1;
}
}
};
})();
var rozdzial_ksiazki="rozdział_książki";
var tagclass_1=$(element_strony).filter("."+rozdzial_ksiazki).not('.klasa_książki > .klasa_nagłówka > .rozdział_książki');
var tagclass_2=$(element_strony).filter('.klasa_książki').children('.klasa_nagłówka').children("."+rozdzial_ksiazki);
var tagclass=$(DodatkiSkrypt.DodatkiSkryptJQuery(tagclass_1,tagclass_2));
if(tagclass===null){
return null;
}
var liczba_elementow=tagclass.length;
if(liczba_elementow==0){
return null;
}
var titles=new Array();
var tabstrona=new Array();
var tabs=new Array();
var tab_section=new Array();
var tab_hn=new Array();
/**/
var edit_action=function(numer,strona,hn_element,link_strona,czy_link_nie_w_naglowku){
var div_heading=$(hn_element).closest('.mw-heading');
var heading=($(div_heading).length>0)?$(div_heading):$(hn_element);
var linkstrony_editsection=$(heading).children('.mw-editsection').first().get(0);
var czy_linkstrony_editsection=$(linkstrony_editsection).has('.stronasubst-edytuj').get(0);
if(!linkstrony_editsection){
var editsection=document.createElement('span');
$(editsection).addClass('mw-editsection');
$(heading).first().append(editsection);
}
var mw_editsection=$(heading).first().find('.mw-editsection');
if(czy_linkstrony_editsection==null){
var skin_mobilny=($('body.skin-minerva').length>0);
if(!skin_mobilny){
var bracket_poczatek=document.createElement('span');
$(bracket_poczatek).addClass('mw-editsection-bracket');
$(bracket_poczatek).html("[");
var a=document.createElement('a');
$(a).attr({
'href':"/w/index.php?title="+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(strona,false,true)+"&action=edit"+((numer>0)?("§ion="+numer):""),
'title':"Edytuj artykuł: "+link_strona,
'class':'stronasubst-edytuj',
});
$(a).html("edytuj");
var bracket_koniec=document.createElement('span');
$(bracket_koniec).addClass('mw-editsection-bracket');
$(bracket_koniec).html("]");
$(mw_editsection).append(bracket_poczatek);
$(mw_editsection).append(a)
$(mw_editsection).append(bracket_koniec);
}else{
var a=document.createElement('a');
$(a).attr({
'class':"cdx-button cdx-button--size-large cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--icon-only cdx-button--weight-quiet stronasubst-edytuj",
'role':'button',
'title':"Edytuj sekcję: "+link_strona,
'href':"/w/index.php?title="+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(strona,false,true)+"&action=edit"+((numer>0)?("§ion="+numer):"")
});
var span1=document.createElement('span');
$(span1).attr('class','minerva-icon minerva-icon--edit');
var span2=document.createElement('span');
$(span2).html("edytuj");
$(a).append(span1);
$(a).append(span2);
$(mw_editsection).append(a);
}
}
linkstrony_editsection=$(heading).children('.mw-editsection').first().has('.stronasubst-artykuł').get(0);
if(linkstrony_editsection==null){
var mw_editsection_bracket=$(mw_editsection).find('a').first().get(0);
if(mw_editsection_bracket!==null){
if(czy_link_nie_w_naglowku){
var skin_mobilny=($('body.skin-minerva').length>0);
if(!skin_mobilny){
var a=document.createElement('a');
$(a).html("artykuł");
$(a).attr({
"href":"/wiki/"+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(link_strona),
"title":"Zobacz artykuł: "+link_strona,
"class":"stronasubst-artykuł",
});
var span=document.createElement('span');
$(span).html("| ");
$(span).attr('class',"mw-editsection-bracket");
var czy_ma=$(mw_editsection_bracket).parent().hasClass('link');
if(czy_ma){
var rodzic_mw_editsection_bracket=$(mw_editsection_bracket).parent();
$(rodzic_mw_editsection_bracket).before(span);
var span2=$(rodzic_mw_editsection_bracket).prev();
if($(span2).length>0){
$(span2).before(a);
}else{
$(mw_editsection).append(a);
}
}else{
$(mw_editsection_bracket).before(span);
var span2=$(mw_editsection_bracket).prev();
if($(span2).length>0){
$(span2).before(a);
}else{
$(mw_editsection).append(a);
}
}
}else{
var a=document.createElement('a');
$(a).attr({
'class':"cdx-button cdx-button--size-large cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--icon-only cdx-button--weight-quiet stronasubst-artykuł",
'role':'button',
'title':"Zobacz artykuł: "+link_strona,
'href':"/wiki/"+DodatkiSkrypt.Szereg.Kodowanie.EncodeHtml(link_strona)
});
var span1=document.createElement('span');
$(span1).attr('class','minerva-icon minerva-icon--link');
var span2=document.createElement('span');
$(span2).html("przejdź");
$(a).append(span1);
$(a).append(span2);
var mw_editsection_bracket=$(mw_editsection).find('a').first().get(0);
var czy_ma=$(mw_editsection_bracket).parent().hasClass('link');
if(czy_ma){
$(mw_editsection_bracket).parent().filter('.link').before(a);
}else{
$(mw_editsection_bracket).before(a);
}
}
}
}
}
$(heading).children('.mw-editsection').DodatkiSkryptEach(function(i,element){
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks,aktualna_strona));
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks,aktualna_strona));
});
}
/**/
var ZmienianieElementoweIndeksuStronyOrazSamegoTOC=function(data,muteks_wolumin,tab_section,__FUNKCJA){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var wikikod=data.parse.text['*'];
var c=data.parse.text.number;
if(/^\s*$/g.test(wikikod)){return;}
if(tab_section.length==0){return;}
var tab_c=tab_section[c];
if(typeof(tab_c)=="string"){return;}
if(tab_c.length!=undefined){
var headline=tab_c[0];
}else{
var headline=tab_c;
}
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
wikikod=__FUNKCJA(headline,wikikod,tab_c);
headline=DodatkiSkrypt.Szereg.Napis.ZmienianieNapisuWprowadzeniaTekstu(headline,wikikod);
DodatkiSkrypt.Strona.ZamienianieNazwyLinkuSpisuMateriiTOC(headline,true,stronasubst_latex);
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
if(stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach){
//var muteks=new DodatkiSkrypt.Muteks();
//return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var headline_nowe=headline;
if(headline_nowe){
var muteks=new DodatkiSkrypt.Muteks();
var tab_promise_fun=new Array();
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(headline_nowe,muteks,aktualna_strona);});
tab_promise_fun.push(function(){return DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(headline_nowe,muteks,aktualna_strona);});
return DodatkiSkrypt.PoKoleiRozmieszczanieKorutyn(undefined,undefined,tab_promise_fun);
}
});
}
},null,muteks_wolumin);
}
var muteks_wolumin=new DodatkiSkrypt.Muteks();
var tab_fun=new Array();
for (var i=0;i<liczba_elementow;++i){
var tagclassname=tagclass[i];
var szablon_subst_js=$(element_strony).find(".rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .szablon_subst_js.szablon_subst_js_zanalizowany");
var CzyOdrzucic=function(){
var potomek_analizowany=$(szablon_subst_js).find(tagclassname);
return (potomek_analizowany.length>0);
}
if(CzyOdrzucic()){continue;}
if(tagclassname.tagName.toUpperCase()!="DIV"){
return;
}
var class_element=$(tagclassname).children('.strona_subst');
var element;
if((class_element!==null)&&(class_element.length==1)){
element=class_element[0];
if(element.tagName.toUpperCase()!="DIV"){
return;
}
}else{
console.error("Wystąpił błąd: ", "Liczba elementów w div'ie, tzn. .strona_subst, jest nierówna jeden:",class_element.length);
return;
}
var czy_link_nie_w_naglowku;
var strona_headline=$(tagclassname).find("> "+heading+", > h1, > h2, > h3, > h4, > h5, > h6").not(toc_h);
var link_strona;
if((strona_headline!==null)&&(strona_headline.length==1)){
strona_a=$(strona_headline[0]).find('a');
if((strona_a!==null)&&(strona_a.length==1)){
link_strona=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(strona_a[0].getAttribute('href'));
if(link_strona!==null){
var re=/\/wiki\//g;
if(re.test(link_strona)){
link_strona=link_strona.substring(6,link_strona.length);
czy_link_nie_w_naglowku=false;
}else{
return;
}
}
}else{
link_strona=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(element).html()));
czy_link_nie_w_naglowku=true;
}
}else{
console.error("Wystąpił błąd: ", "Liczba nagłówków się nie zgadza, jest nierówna jeden!",strona_headline.length);
return;
}
var re = /^[_\s]*$/g;
var dopasowanie = re.test(link_strona);
if(dopasowanie){
return;
};
link_strona=link_strona.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ").replace(/&/g,"&").replace(/ /g," ");
var hash=link_strona.replace(/^([^#]*)#(.*)$/,"$2").replace(/&/g,"&").replace(/ /g,"_");
/**/
var hn_element=strona_headline[0];
if((hn_element===null)||(!hn_element.tagName.toUpperCase().match(/^H\d+$/g))){return;}
$(hn_element).closest('.mw-heading').children('.mw-editsection').remove();
$(hn_element).children('.mw-editsection').remove();
tab_section[i]=new Array(hn_element,link_strona,czy_link_nie_w_naglowku);
var strona=link_strona.match(/^[^#]*/g).toString();
/**/
var PraceIteracyjne=function(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i){
var tab_promise=new Array();
if(/#/g.test(link_strona)){
/**/
var hash=link_strona.replace(/^([^#]*)#(.*)$/g,"$2");
/**/
strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona);
hash=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(hash);
/**/
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|KtóraSekcjaStrony|"+strona+"|"+hash+"}}",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var wikikod=data.parse.text['*'];
var c=data.parse.text.number;
/**/
var tab_c=tab_section[c];
edit_action(parseInt(wikikod),tab_c[1].match(/^[^#]*/g).toString(),tab_c[0],tab_c[1],tab_c[2]);
},null,muteks_wolumin);
}).DodatkiSkryptCatch((error) => {}));
if(stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami){
if(!stronasubst_aktualizowanie_sekcji_artykolow_ladowanych_rozdzialami_wedlug_strony_glownej_podrecznika){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|ZwróćSekcjęNagłówkaStrony|"+strona+"|"+hash+"}}</div>",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_section,function(headline,wikikod,tab_c){
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod,function(wikikod){
wikikod=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod));
return wikikod;
});
return DodatkiSkrypt.Strona.LinkStrona(strona,hash,wikikod);
});
}).DodatkiSkryptCatch((error) => {}));
}else{
var uzupelniaj_sekcje_artykulow;
if(stronasubst_aktualizowanie_nieistniejacych_sekcji_rozdzialow_artykulow_na_stronie_glownej_w_artykule){
uzupelniaj_sekcje_artykulow="tak";
}else{
uzupelniaj_sekcje_artykulow="";
}
link_strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(link_strona);
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:Ramka|Rozwiń|{{#invoke:StronicowyParser|LiniaArtykułuKsiążki|nazwa przestrzeni nazw=(main)|nazwa jednostki="+link_strona+"|analiza=tak|nagłówek=tak|uzupełniaj sekcje artykułów="+uzupelniaj_sekcje_artykulow+"|wyspecjalizowana=tak}}}}",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_section,function(headline,wikikod,tab_c){
var stare=tab_c[1];var nowe;
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod);
nowe=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod)),true);
stronasubst_tablica_alternatywnych_nazw[stare]=nowe;
var div=document.createElement('div');
$(div).html(wikikod);
var a=$(div).find('a');
if((a!==null)&&(a.length>0)){
$(a[0]).attr('title',stare);
}
return $(div).html();
});
}).DodatkiSkryptCatch((error) => {}));
}
}
}else{
edit_action(0,strona,hn_element,link_strona,czy_link_nie_w_naglowku);
if(stronasubst_aktualizowanie_nazw_artykulow){
strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona);
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:Ramka|Rozwiń|{{#invoke:StronicowyParser|LiniaArtykułuKsiążki|nazwa przestrzeni nazw=(main)|nazwa jednostki="+strona+"|analiza=tak|wyspecjalizowana=tak}}}}",aktualna_strona,null,true,i,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_section,function(headline,wikikod,tab_c){
var stare=tab_c[1];var nowe;
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod);
nowe=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod)),true);
stronasubst_tablica_alternatywnych_nazw[stare]=nowe;
return wikikod;
});
}).DodatkiSkryptCatch((error) => {}));
}
}
return Promise.DodatkiSkryptAll(tab_promise);
};
(function(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i){
tab_fun.push(function(){
return $(document).DodatkiSkryptSettledPromise(function(){
return PraceIteracyjne(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i);
});
});
})(link_strona,strona,hn_element,czy_link_nie_w_naglowku,tab_section,i);
/**/
tabs[i]=link_strona;
var czy=false;
for(var d in titles){
if(titles[d]==link_strona){
czy=true;
break;
}
}
if(!czy){
titles[titles.length]=link_strona;
}
if(tabstrona[link_strona]==null){
tabstrona[link_strona]=new Array();
}
var tab=tabstrona[link_strona];
var tablen=tab.length;
tabstrona[link_strona][tablen]=element;
}
/**/
var PraceNaglowki=function(){
var tab_promise=new Array();
if(element_strony==document){
var namespace=DodatkiSkrypt.Info.page.namespace;
var strona_podrecznika=((namespace!="")?(namespace+":"):"")+DodatkiSkrypt.Info.page.bookname;
}else{
var zaan=$(element_strony).parents('.rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .szablon_subst_js.szablon_subst_js_zanalizowany');
if((zaan!==null)&&(zaan.length>0)){
var strona=zaan[0].getAttribute('nazwa_strony');
if(strona){
var strona_podrecznika=DodatkiSkrypt.Nazwy.FULLBOOKNAME(strona);
}else{
var strona_podrecznika=DodatkiSkrypt.Nazwy.FULLBOOKNAME(aktualna_strona);
}
}else{
var strona_podrecznika=DodatkiSkrypt.Nazwy.FULLBOOKNAME(aktualna_strona);
}
}
strona_podrecznika=strona_podrecznika.replace(/[\s]+/g,"_");
strona_podrecznika=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona_podrecznika);
//var tab_promise=new Array();
var tab_klasa_ksiazki=new Array();
var klasa_ksiazki_1=$(element_strony).filter('.klasa_książki');
if(klasa_ksiazki_1.length>0){tab_klasa_ksiazki.push(klasa_ksiazki_1);}
var klasa_ksiazki_2=$(element_strony).find('.klasa_książki');
if(klasa_ksiazki_2.length>0){tab_klasa_ksiazki.push(klasa_ksiazki_2);}
var klasa_ksiazki=$(tab_klasa_ksiazki);
if(klasa_ksiazki.length>0){
var tab_naglowka=new Array();
var tab_hn=new Array();
for(var z=0;z<klasa_ksiazki.length;++z){
var pojedyncza_klasa_ksiazki=klasa_ksiazki[z];
var CzyOdrzucic=function(){
var potomek_analizowany=$(element_strony).find(".rodzic_szablon_subst_js.szablon_subst_js_zanalizowany, .szablon_subst_js.szablon_subst_js_zanalizowany").find(pojedyncza_klasa_ksiazki);
if(potomek_analizowany.length>0){return true;};
return false;
}
if(CzyOdrzucic()){continue;}
var dana_klasa_naglowka=$(pojedyncza_klasa_ksiazki).children('.klasa_nagłówka').children('.mw-heading').children(hn).not(toc_h);
if($(dana_klasa_naglowka).length>0){
$(dana_klasa_naglowka).DodatkiSkryptEach(function(g,element){
var naglowek=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML($(element).html())));
naglowek=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(naglowek);
var ww=1;
for(var x=0;x<tab_naglowka.length;++x){
if(tab_naglowka[x]==naglowek){
++ww;
}
}
naglowek=naglowek+((ww>1)?("_"+ww):"");
tab_naglowka[g]=naglowek;
tab_hn[g]=element;
if($(element).parent().parent().parent().hasClass('klasa_książki')){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|KtóraSekcjaStrony|"+strona_podrecznika+"|"+naglowek+"}}",aktualna_strona,null,true,g,null,null,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(promise.DodatkiSkryptThen(function(data){
//var muteks=new DodatkiSkrypt.Muteks();
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var wikikod=data.parse.text['*'];
var c=data.parse.text.number;
var nazwa_podrecznika=strona_podrecznika.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ")
var naglowek_sekcji_podrecznika=tab_naglowka[c].replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ")
edit_action(parseInt(wikikod),nazwa_podrecznika,tab_hn[c],nazwa_podrecznika+"#"+naglowek_sekcji_podrecznika,true);
},null,muteks_wolumin);
}).DodatkiSkryptCatch((error) => {}));
if(stronasubst_aktualizowanie_naglowkow_strony_glownej_podrecznika_na_stronie_zbiorczej){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse("{{#invoke:StronicowyParser|ZwróćSekcjęNagłówkaStrony|"+strona_podrecznika+"|"+naglowek+"}}",aktualna_strona,null,true,g,null,null,null,null,stronasubst_zapisz_dane_na_kliencie)
tab_promise.push(promise.DodatkiSkryptThen(function(data){
return ZmienianieElementoweIndeksuStronyOrazSamegoTOC(data,muteks_wolumin,tab_hn,function(headline,wikikod,tab_c){
wikikod=this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod,function(wikikod){
wikikod=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(wikikod));
return wikikod;
});
return wikikod;
});
}).DodatkiSkryptCatch((error) => {}));
}
}
//++g;
});
}
}
}
return Promise.DodatkiSkryptAll(tab_promise);
}
tab_fun.push(function(){
return $(document).DodatkiSkryptSettledPromise(function(){
return PraceNaglowki();
});
});
/**/
var RozwazajNaglowki=function(){
var toc_fun=new DodatkiSkrypt.Strona.ListaNodeTOC(element_strony);
if((toc_fun.toc!==null)&&(toc_fun.toc.length>0)){
for(var w=0;w<toc_fun.toc.length;++w){
var czy_side_bar_toc=toc_fun.CzySideBarToc(toc_fun.toc[w]);
var ile_jest=0;
var li=$(toc_fun.toc[w]).find('li');
if((li!==null)&&(li.length>0)){
for(var dd=0;dd<li.length;++dd){
var element_li=li[dd];
var tocnumber;var toctext_wartosc;
if(czy_side_bar_toc){
tocnumber=$(element_li).find('.vector-toc-numb').first()[0];
if(!tocnumber){continue;}
toctext_wartosc=$(element_li).find('.vector-toc-text').first().html().replace(new RegExp(DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(tocnumber.outerHTML),"g"),"");
}else{
tocnumber=$(element_li).find('.tocnumber').first()[0];
toctext_wartosc=$(element_li).find('.toctext').first().html();
}
if((tocnumber)&&(toctext_wartosc)){
var czy_jest=undefined;
var klasa_naglowka=$(element_strony).find('.klasa_nagłówka');
if((klasa_naglowka)&&(klasa_naglowka.length>0)&&(klasa_naglowka[ile_jest])){
var element_klasa_naglowka=klasa_naglowka[ile_jest];
var headline=$(element_klasa_naglowka).find(hn).not(toc_h).first()[0];
if((headline)
&&(headline.tagName.toUpperCase().match(/^H\d+$/))
&&(headline.parentNode!=null)
&&(headline.parentNode.tagName.toUpperCase()=="DIV")
&&($(headline).closest('.mw-heading').parent()[0]===element_klasa_naglowka)
){
var element_a;
if(czy_side_bar_toc){
element_a=$(tocnumber).parent().parent().get(0);
}else{
element_a=$(tocnumber).parent().get(0);
}
if(element_a.tagName.toUpperCase()=="A"){
var href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(element_a.getAttribute('href'));
if(href!==null){
href=DodatkiSkrypt.Szereg.Napis.PoprawianieNazwyIdLubHref(href,true);
var id_headline=$(headline).attr('id');
if(id_headline!==null){
id_headline=DodatkiSkrypt.Szereg.Napis.PoprawianieNazwyIdLubHref(id_headline);
if(href!=id_headline){czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
}else{czy_jest=true;}
if(czy_jest===undefined){ile_jest+=1;}
if((czy_jest===undefined)||(!czy_jest)){
var element_toctext=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweSkryptoweOrazNieSkryptoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(toctext_wartosc)).replace(/<[^<>]+>/g,"").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/[_\s]+/g," ");
if(stronasubst_tablica_rozdzialow[element_toctext]==null){
stronasubst_tablica_rozdzialow[element_toctext]=new Array(tocnumber);
}else{
stronasubst_tablica_rozdzialow[element_toctext].push(tocnumber);
}
}
}
}
}
}
}
}
/**/
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return RozwazajNaglowki();
},null,muteks_stronasubst));
/**/
var Strona=function(strona){
var strona_re=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(strona);
var re=new RegExp("^\\s*"+strona_re+"\\s*#","g");
return re;
}
var CzyArtykulyZNaglowkamiDlaStrony=function(re){
for(var s in titles){
var czy_hash=titles[s].match(re);
if(czy_hash){
return true;
}
}
return false;
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var toc_fun=new DodatkiSkrypt.Strona.ListaNodeTOC(element_strony);
DodatkiSkrypt.Strona.UstawParametryUstawienioweTOC(toc_fun.toc,stronasubst_ukrywaj_toc,stronasubst_mathml);
},null,muteks_stronasubst));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab_promise=new Array();
for ( var t in titles ) {
var strona=titles[t].match(/^[^#]*/g).toString();
var szablon_artykulu;
var re_strona=Strona(strona);
var czy_naglowki=CzyArtykulyZNaglowkamiDlaStrony(re_strona);
if(!czy_naglowki){
strona=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(strona);
szablon_artykulu="{{:"+strona+"}}";
}else{
/*---------------------------------*/
var rozdzial1=null;
var re=/^([^#]*)#(.*)$/g;
if(re.test(titles[t])){
rozdzial1=titles[t].replace(re,"$2");
rozdzial1=rozdzial1.replace(/&/g,"&").replace(/ /g," ").replace(/<i>/g,"''").replace(/<\/i>/g,"''").replace(/<b>/g,"'''").replace(/<\/b>/g,"'''");
rozdzial1=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(rozdzial1);
}else{rozdzial1="";}
var rozdzial2=null;
var tit=titles[parseInt(t)+1];
if( tit && re.test(tit) && re_strona.test(tit)){
rozdzial2=tit.replace(re,"$2");
rozdzial2=rozdzial2.replace(/&/g,"&").replace(/ /g," ").replace(/<i>/g,"''").replace(/<\/i>/g,"''").replace(/<b>/g,"'''").replace(/<\/b>/g,"'''");
rozdzial2=DodatkiSkrypt.Szereg.Styl.SpecjalneKodyWiki(rozdzial2);
}else{rozdzial2="";}
/*-- -------------------------*/
szablon_artykulu="{{#invoke:Ramka|Rozwiń|{{#invoke:StronicowyParser|TekstRozdziałuStrony|"+strona+"|"+rozdzial1+"|"+rozdzial2+"}}}}";
}
//szablon_artykulu="{{PrzytnijTekst|"+szablon_artykulu+"}}";
//if(stronasubst_opakuj_kategorie_ze_sortowaniem){
// szablon_artykulu="{{OpakujKategorieZeSortowaniem|"+szablon_artykulu+"}}";
//}
(function(szablon_artykulu,strona,t){
var promise=DodatkiSkrypt.Scribunto.ApiLuaParse(szablon_artykulu,strona,null,true,t,stronasubst_opakuj_kategorie_ze_sortowaniem,stronasubst_przytnij_tekst,null,null,stronasubst_zapisz_dane_na_kliencie);
tab_promise.push(
promise.DodatkiSkryptThen(function(data){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
return WikikodTitle(data,tabs,titles,tabstrona,muteks,tablica_przednaglowkowa_html,stronasubst_latex,stronasubst_mathml);
},null,muteks_wolumin);
}).DodatkiSkryptCatch(function(data){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var strona_hash=titles[t];
var elements=tabstrona[strona_hash];
var muteks=new DodatkiSkrypt.Muteks();
return NiePobranaStronaLubNieIstnieje(strona,strona_hash,elements,muteks);
},null,muteks_wolumin);
}));
})(szablon_artykulu,strona,t);
}
tab_fun.forEach(function(element_fun){
tab_promise.push($(document).DodatkiSkryptSetTimeOut(function(){
return element_fun();
},0));
})
return Promise.DodatkiSkryptAll(tab_promise);
},null,muteks_stronasubst));
return Promise.DodatkiSkryptAll(tab_promise);
}
//this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod,)
this.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera=function(wikikod,funkcja1,funkcja2){
if(!stronasubst_nie_usuwaj_styli){
wikikod=DodatkiSkrypt.Szereg.Styl.PrzeniesienieStyloweHTMLNaStartStronyParsera(wikikod);
wikikod=funkcja1?funkcja1(wikikod):wikikod;
}else{
wikikod=DodatkiSkrypt.Szereg.Styl.EwentualneUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(wikikod);
wikikod=funkcja2?funkcja2(wikikod):wikikod;
}
return wikikod;
}
this.NaprawianieNapisuWprowadzeniaTekstuStrony=function(){
if(stronasubst_naprawiaj_naglowki){
DodatkiSkrypt.Strona.NaprawianieNapisuWprowadzeniaTekstu();
}
}
this.UruchomBiegUruchamaniaStrony=function(){
if(!stronasubst_uruchom_postep_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.ProgressStrony.UstawianieWidokuEwolucji();
}
}
this.AnalizujDalejSzablonSubst=function(element_strony_szablonu,muteks_szablon,strona_hash){
element_strony_szablonu=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element_strony_szablonu);
var tab_promise=new Array();
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](SzablonSubst,new Array("szablony")).DodatkiSkryptThen(function(){
return SzablonSubst.szablony.PobierzSzablon(element_strony_szablonu,undefined,undefined,strona_hash);
});
},null,muteks_szablon));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var rodzic_szablon_subst_js_szablonu=DodatkiSkrypt.Scribunto.StronicowyParser.PoliczPodAleNiePodPodRodzica(element_strony_szablonu,true);
if($(rodzic_szablon_subst_js_szablonu).length>0){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Nawigacja.createCollapseButtons(rodzic_szablon_subst_js_szablonu);
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Nawigacja.createNavigationBarToggleButton(rodzic_szablon_subst_js_szablonu);
},null,muteks));
}
return Promise.DodatkiSkryptAll(tab_promise);
},null,muteks_szablon));
var promise=tab_promise.at(0);
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return promise.DodatkiSkryptThen(function(element_strony){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var rodzic_szablon_subst_js=DodatkiSkrypt.Scribunto.StronicowyParser.ElementyOpakowaniaSzablonSubst(element_strony,true);
$(rodzic_szablon_subst_js).DodatkiSkryptEach(function(i,element){
this_zmienna.PrzeniesienieLubEwentualnieUsuwaniePrzySprawdzeniuStyloweOrazLinkoweStronyParsera(element);
var nazwa_strony=$(element).attr('nazwa_strony');
/**/
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var toc_fun=new DodatkiSkrypt.Strona.ListaNodeTOC(element);
DodatkiSkrypt.Strona.UstawParametryUstawienioweTOC(toc_fun.toc,stronasubst_ukrywaj_toc,stronasubst_mathml);
},null,muteks));
/**/
if(nazwa_strony){
var strona_start_parent=new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode(element);
if(
(strona_start_parent.CzyElementRodzicJestStronaStart())
&&((new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode()).CzyTenElementMaStronaStartToc(element))
){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
var strona_start_rodzic=strona_start_parent.ElementKontenerowyStronaStart();
var strona_start_rodzic_node=$(strona_start_rodzic).get(0);
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(new Array(strona_start_rodzic_node),new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
},null,muteks));
}else{
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
DodatkiSkrypt.Strona.TworzenieSpisuRzeczyVectorStickyTOC();
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(undefined,new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
/**/
DodatkiSkrypt.Strona.AktualizacjaZdarzeniowaMenowaWektorowaBudowyStrony();
},null,muteks));
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var str_strona_start_dziecko=$(element).find('.strona_start');
if($(str_strona_start_dziecko).length>0){
for(var strona_start_dziecko of $(str_strona_start_dziecko)){
var strona_start_dziecko_filtr=new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode(strona_start_dziecko);
if(
(strona_start_dziecko_filtr.CzyElementRodzicJestStronaStart())
&&((new DodatkiSkrypt.Strona.CzyElementNodeJestPodElementemNode()).CzyTenElementMaStronaStartToc(strona_start_dziecko))
){
DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
var strona_start_dziecko_node=strona_start_dziecko_filtr.ElementKontenerowyStronaStart().get(0);
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(new Array(strona_start_dziecko_node),new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
}
}
}
},null,muteks));
///tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// DodatkiSkrypt.Strona.OdkywanieSpisuMateriiTOC();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Boksy.StickyXY();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
//return DodatkiSkrypt.Boksy.NotOverflowXY();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
// return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
//},null,muteks));
//tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
/// return DodatkiSkrypt.Strona.PrzeIndeksowanieWszystkichRazemTOC(true);
//},null,muteks));
}else{
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Strona.IndeksowanieNapisuWprowadzeniaTekstu();
},null,muteks));
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.Strona.QuizIframe(element,nazwa_strony||DodatkiSkrypt.Info.page.fullname);
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab_promise=new Array();
var fullname=((nazwa_strony)?(nazwa_strony):(DodatkiSkrypt.Info.page.fullname));
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
return this_zmienna.CzyStronaSubst(element,fullname,true,muteks,true);
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
return this_zmienna.ZbiorczaStrona(element,fullname,muteks,true,this_zmienna.CzyStronaSubst);
},null,muteks));
return Promise.DodatkiSkryptAll(tab_promise);
},null,muteks));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_szablon));
return Promise.DodatkiSkryptAll(tab_promise);
}
this.KompleksoweAktualizowanieSpisuMateriiStrony=function(nazwa_strony){
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(undefined,new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
return DodatkiSkrypt.Strona.AktualizacjaZdarzeniowaMenowaWektorowaBudowyStrony().DodatkiSkryptThen(function(){
/**/
var strona_start=DodatkiSkrypt.Szereg.Styl.ElementRodzic('.strona_start .ciało_strona');
if(strona_start.length>0){
for(var str_strona_start of strona_start){
DodatkiSkrypt.Strona.AktualizowanieSpisuMateriiStrony(new Array(str_strona_start),new Array(),nazwa_strony,new Array(),new Array(),new Array(),new Array(),true,stronasubst_latex,stronasubst_mathml,true);
}
}
});
}
this.CzyStronaSubst=function(element,aktualna_strona,czy_szablon_subst,muteks_szablon, czy_nie_koniec){
element=DodatkiSkrypt.Szereg.Styl.ElementRodzic(element);
var promise=DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,element).DodatkiSkryptThen(function(wikikod){
var tab_promise=new Array();
if((wikikod)||(czy_szablon_subst)){
if(stronasubst_numerowanie_poszczegolnych_rozdzialow){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](NumerSubst,new Array("numer")).DodatkiSkryptThen(function(){
var artykul=DodatkiSkrypt.Nazwy.ARTICLENAME(aktualna_strona);
return NumerSubst.numer.NumerujRozdzialyArtykulu(element,artykul,aktualna_strona);
});
},null,muteks_szablon));
};
if(stronasubst_dymki_nad_linkami_w_ladowanych_dynamicznie_stronach){
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DymkiSubst,new Array("gadgetdymkisubst")).DodatkiSkryptThen(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawZdarzeniaKomunikatuInfo(element,muteks,aktualna_strona));
tab_promise.push(DymkiSubst.gadgetdymkisubst.UstawTagiIKlasyKomunikatuInfo(element,muteks,aktualna_strona));
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_szablon));
}
}
if(!czy_nie_koniec){
return Promise.DodatkiSkryptAll(tab_promise).DodatkiSkryptThen(function(){
if(wikikod){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks_szablon=new DodatkiSkrypt.Muteks();
return StronaSubstAnaliza(element,wikikod,aktualna_strona,muteks_szablon);
},null,muteks_szablon);
};
});
}
});
return promise;
}
this.ZbiorczaStrona=function(id_numerowanie,aktualna_strona,muteks,czy_tak_function,__function){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var funkcja=function(){
id_numerowanie=DodatkiSkrypt.Szereg.Styl.ElementRodzic(id_numerowanie);
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza(aktualna_strona,id_numerowanie).DodatkiSkryptThen(function(data){
if((data)&&(data!=="")){
DodatkiSkrypt.ProgressStrony.UstawianieWidokuEwolucji();
}
}).DodatkiSkryptThen(function(){
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
$(id_numerowanie).DodatkiSkryptEach(function(i,id_element){
var tab_elements=new Array();
$(id_element).find(".rozdział_książki").DodatkiSkryptEach(function(i,element){
var str_rozdzial=$(id_element).find('.klasa_książki').children('.klasa_nagłówka').children(element);
if(str_rozdzial.length==0){
var parent=$(element).get(0);
if((parent)&&(($(tab_elements).filter(parent).length==0)/*||($(tabs).find(parent).length==0)*/)){
tab_elements.push(parent);
}
}
});
var str_element=$(id_element).find('.klasa_książki');
if(str_element.length>0){
str_element.DodatkiSkryptEach(function(i,element){
tab_elements.push(element);
});
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var muteks=new DodatkiSkrypt.Muteks();
var tab_str=$(tab_elements);
if(tab_str.length>0){
return __function(tab_str,aktualna_strona,czy_tak_function,muteks);
}
},null,muteks));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
}
if(stronasubst_uzupelnianie_uruchom_tylko_dla_stron_ladowanych_na_glownej_stronie_zbiorczej){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyPrawdopodobnieStronaZbiorcza().DodatkiSkryptThen(function(data){
if((data)&&(data!="")){
return funkcja();
}else{
var muteks=new DodatkiSkrypt.PustyMuteks();
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
},null,muteks);
}
});
}else{
return funkcja();
}
},null,muteks);
}
};
KategorieSubst.KategorieSubst=function(){
var gadget_uruchom_obsluge_kategorie;
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig_kategoriesubst){
czy_nie_gconfig_kategoriesubst=true;
mw.messages.set({
'KategorieSubst-name': 'Obsługa kategorii',
'KategorieSubst-description-page': 'Wikibooks:StronicowyParser',
'KategorieSubst-uruchom-kategorie': 'Uruchom dodatkową obsługę kategorii.',
});
gConfig.register('KategorieSubst', {name: mw.msg('KategorieSubst-name'), descriptionPage: mw.msg('KategorieSubst-description-page')}, [
{
name: 'uruchom-kategorie',
desc: mw.msg('KategorieSubst-uruchom-kategorie'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_KategorieSubst-uruchom-kategorie']
}]);
gadget_uruchom_obsluge_kategorie=(gConfig.get('KategorieSubst', 'uruchom-kategorie')==true);
}
}
gadget_uruchom_obsluge_kategorie=(gadget_uruchom_obsluge_kategorie!==undefined)?gadget_uruchom_obsluge_kategorie:false;
var tabela_sortkey_promise=undefined;
var this_zmienna=this;
var tab_kategorie_strony_pliki={0:'subcat',1:'page',2:'file',};
var TworzenieTablicyTytułowejNazwSortowaniaStron=function(fullname,jakie_pozycje_kategorii){
var params = {
action: 'query',
list: 'categorymembers',
cmtitle: fullname,
cmlimit: 5000,
cmprop: 'title|sortkeyprefix',
cmtype: tab_kategorie_strony_pliki[jakie_pozycje_kategorii],
format: 'json',
smaxage: 600,
maxage: 600,
};
return DodatkiSkrypt.api.ZadaniaApi(params).DodatkiSkryptThen(function(data){
var tab=new Array();
var category = data.query.categorymembers;
for(var cat in category){
var categorymembers=category[cat];
var title=categorymembers.title;
var sortkey=categorymembers.sortkeyprefix;
tab[DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(title)]=sortkey;
}
return tab;
}).DodatkiSkryptCatch(function(error){return Promise.reject(error);});
}
var PobierzInformacjePlikowe=function(plik){
var params={
action: 'query',
format: 'json',
prop: 'imageinfo',
iiprop: 'url|size',
iiurlwidth: 85,
titles: plik,
smaxage: 600,
maxage: 600,
};
return DodatkiSkrypt.api.ZadaniaApi(params).DodatkiSkryptThen(function(data){
var pages=data.query.pages;
for(var p in pages){
var imageinfo=pages[p].imageinfo[0];
var width=imageinfo.width;
var height=imageinfo.height;
var size=imageinfo.size;
var url=((imageinfo.thumburl)?(imageinfo.thumburl.replace(/^[Hh][Tt][Tt][Pp][Ss]?:\/\//g,"//")):(imageinfo.url.replace(/^[Hh][Tt][Tt][Pp][Ss]?:\/\//g,"//")));
if(size/1024<1){
var size_new=size+" B";
}else if(size/1024<1024){
var size_new=parseInt(size/1024*100)/100+" KB";
}else if(size/1024/1024<1024){
var size_new=Math.round(size/1024/1024*100)/100+" MB";
}else if(size/1024/1024/1024<1024){
var size_new=Math.round(size/1024/1024/1024*100)/100+" GB";
}else{
var size_new=size+" B";
}
return Promise.resolve([width,height,size_new,url])
}
return Promise.reject(data);
}).DodatkiSkryptCatch(function(error){return Promise.reject(error);});
}
var IleStronKategoriiPlikowJestWDanejKategorii=function(fullname){
var params={
action: 'query',
format: 'json',
titles: fullname,
prop: 'categoryinfo'
};
return DodatkiSkrypt.api.ZadaniaApi(params).DodatkiSkryptThen(function(data){
if((data)&&(data.query)&&(data.query.pages)){
var pages = data.query.pages;
for (page in pages){
var categoryinfo=pages[page].categoryinfo;
if(categoryinfo){
return Promise.resolve([categoryinfo.subcats||0,categoryinfo.pages||0,categoryinfo.files||0]);
}
}
}
return Promise.resolve([0,0,0]);
}).DodatkiSkryptCatch(function(error){return Promise.reject(error);});
}
var IleJestKategoriiStronIPlikowWKategorii=function(href,__function){
var promise_kategorie_ustawienia=DodatkiSkrypt.DodatkiSkryptUserOption.get(href,"CzłonkowieKategorii:");
return promise_kategorie_ustawienia.DodatkiSkryptThen(function(data_ustawienia){
if(!data_ustawienia){return;}
var promise_kategorie=IleStronKategoriiPlikowJestWDanejKategorii(href);
return promise_kategorie.DodatkiSkryptThen(function(data_faktycznie){
var ile_kategorii=data_faktycznie[0];var ile_stron=data_faktycznie[1];var ile_plikow=data_faktycznie[2];
var tab_strony=data_ustawienia.split("||");
for(var i=0;i<tab_strony.length;++i){
var strona;var sortkey;var numer_porzadku;var przestrzen;var nazwa;
var strona_sort=tab_strony[i];
var tab_strona_sort=strona_sort.split("|");
var kategoria_strona_plik=tab_strona_sort[0];
var czy_kategoria=/^[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]:/g.test(kategoria_strona_plik);
if(czy_kategoria){
++ile_kategorii;
}else{
var czy_plik=/^[Pp][Ll][Ii][Kk]:/g.test(kategoria_strona_plik);
if(czy_plik){
++ile_plikow;
}else{
++ile_stron;
}
}
}
return __function(ile_kategorii,ile_stron,ile_plikow)
});
});
}
var WstawPozycjeNaStronieKategoriiWedleDanychStron=function(fullname,numer_porzadku,wezel,przestrzen,pozycja,nazwa,czy_zagniezdzone,media,kategorie){
if(!tabela_sortkey_promise){tabela_sortkey_promise=new Array();};
if(!tabela_sortkey_promise[fullname]){tabela_sortkey_promise[fullname]=new Array();};
tabela_sortkey_promise[fullname][numer_porzadku]=(!tabela_sortkey_promise[fullname][numer_porzadku])?(TworzenieTablicyTytułowejNazwSortowaniaStron(DodatkiSkrypt.Info.page.fullname,0)):tabela_sortkey_promise[fullname][numer_porzadku];
return tabela_sortkey_promise[fullname][numer_porzadku].DodatkiSkryptThen(function(tabela_sortkey){
if(!czy_zagniezdzone){
if(numer_porzadku!=2){
var category_a=$(wezel).find('> ul:last-child > li').find(' > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeBullet + bdi > a, > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeEmptyBullet + bdi > a');
}else{
var category_a=$(media||kategorie).find(' > ul.gallery > li.gallerybox > div.gallerytext > a.galleryfilename');
}
}else{
var category_a=$(wezel).find(' > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeBullet + bdi > a, > .CategoryTreeSection > .CategoryTreeItem > span.CategoryTreeEmptyBullet + bdi > a');
}
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var czy_koniec=false;
for(var p=0;p<category_a.length;++p){
var element_a=category_a[p];
var pozycja_a=element_a.innerHTML;
if(pozycja_a==pozycja){
if(!czy_zagniezdzone){
var li=$(element_a).closest('li');
}else{
var li=$(element_a).closest('div.CategoryTreeSection');
}
$(li).remove();
}
}
for(var p=0;p<=category_a.length;++p){
(function(p,category_a){
if(numer_porzadku==0){
if(category_a.length==0){
var modul1=(!czy_zagniezdzone)?DodatkiSkrypt.UruchomPobranePliki('ext.categoryTree.styles'):null;
var modul2=(!czy_zagniezdzone)?DodatkiSkrypt.UruchomPobranePliki('ext.categoryTree'):null;
}
}else if(numer_porzadku==2){
var modul1=(!czy_zagniezdzone)?DodatkiSkrypt.UruchomPobranePliki('mediawiki.page.gallery.styles'):null;
var modul2=null;//=DodatkiSkrypt.UruchomPobranePliki('mmv');
}
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
if(czy_koniec){return;}
var category_li;
var promise_strony=Promise.all([null,null,modul1,modul2]);
if(p<category_a.length){
var element_a=category_a[p];
var pozycja_a=element_a.innerHTML;
if(numer_porzadku==1){
var promise_przestrzen=DodatkiSkrypt.Scribunto.Nazwy.NAZWAPRZESTRZENI(pozycja_a);
var promise_nazwa=DodatkiSkrypt.Scribunto.Nazwy.NAZWASTRONY(pozycja_a);
}else{
var promise_przestrzen=Promise.resolve("");
var promise_nazwa=Promise.resolve(pozycja_a);
}
promise_strony=Promise.all([promise_przestrzen,promise_nazwa,modul1,modul2]).DodatkiSkryptThen(function(data){
var przestrzen_strony=data[0];var nazwa_strony=data[1];
var nazwa_a=(tabela_sortkey[(((numer_porzadku==0)||(numer_porzadku==2))?(przestrzen+":"):"")+pozycja_a]||"")+nazwa_strony+((numer_porzadku==1 )?przestrzen_strony:(""));
var tabs=(new Array(nazwa,nazwa_a)).sort();
if(nazwa==tabs[0]){
category_li=$(element_a).closest((!czy_zagniezdzone)?('li'):('div.CategoryTreeSection'));
}
return Promise.resolve(data);
});
}
return promise_strony.DodatkiSkryptThen(function(data){
var przestrzen_strony=data[0];var nazwa_strony=data[1];
if((category_a.length==p)||(category_li)){
var element_wezla;
var strona=(((przestrzen)&&(przestrzen!=""))?(przestrzen+":"):"")+pozycja;
if(numer_porzadku==0){
var promise_wezel=IleStronKategoriiPlikowJestWDanejKategorii(przestrzen+":"+pozycja);
}else{
var promise_wezel=Promise.resolve();
}
return promise_wezel.DodatkiSkryptThen(function(data){
if(numer_porzadku==0){
var ile_kategorii=data[0];var ile_stron=data[1];var ile_plikow=data[2];
var tabela_napis=new Array();
if(ile_kategorii>0){tabela_napis.push(ile_kategorii+" kat.");};
if(ile_plikow){tabela_napis.push(ile_plikow+" str.");};
if(ile_stron>0){tabela_napis.push(ile_stron+" pl.")};
var napis;
if(tabela_napis.length>0){napis=tabela_napis.join(", ");}else{napis="pusta";};
napis="("+napis+")";
var category_tree_section=mw.html.element('div',{'class':'CategoryTreeSection'},
new mw.html.Raw(mw.html.element('div',{'class':'CategoryTreeItem'},
new mw.html.Raw(((tabela_napis.length>0)?(mw.html.element('span',{'class':'CategoryTreeBullet'},
new mw.html.Raw(mw.html.element('a',{'class':'CategoryTreeToggle','data-ct-title':DodatkiSkrypt.Szereg.Kodowanie.EncodeWiki(pozycja),'aria-expanded':"false",'data-ct-state':"collapsed" ,'title':'rozwiń'},"")+" "))):(mw.html.element('span',{'class':'CategoryTreeEmptyBullet'},"")+" "))
+mw.html.element("bdi",{"dir":"ltr"},new mw.html.Raw(mw.html.element('a',{'href':'/wiki/'+strona,'title':strona},pozycja)))+" "
+mw.html.element('span',{'title':'Zawiera '+ile_kategorii+' podkategorii, '+ile_stron+' stron i '+ile_plikow+' plików','dir':'ltr'},napis))
)+mw.html.element('div',{'class':'CategoryTreeChildren','style':'display:none'},"")));
if(!czy_zagniezdzone){
element_wezla=mw.html.element('li',{},new mw.html.Raw(category_tree_section));
}else{
element_wezla=category_tree_section;
}
}else if(numer_porzadku==1){
element_wezla=mw.html.element('li',{},new mw.html.Raw(mw.html.element('a',{'href':"/wiki/"+strona,'title':strona},strona)));
}else{
return PobierzInformacjePlikowe(strona).DodatkiSkryptThen(function(data){
var width=data[0];var height=data[1];size=data[2];url=data[3];
if(width>height){
var new_height=parseInt((height/width)*120);
var src_width=120;
var src_height=new_height;
}else{
var new_width=parseInt((width/height)*120);
src_width=new_width;
src_height=120;
}
element_wezla=mw.html.element('li',{'class':'gallerybox','style':'155px'},new mw.html.Raw(
mw.html.element('div',{'class':'thumb','style':'width:150px;height:150px;'},
new mw.html.Raw(mw.html.element('span',{'typeof':'mw:File'},
new mw.html.Raw(mw.html.element('a',{'class':'"mw-file-description"','href':'/wiki/'+strona},
new mw.html.Raw(mw.html.element('img',
{
'alt':strona,
'src':url,
'decoding':"async",
'loading':'lazy',
'width':src_width,
'height':src_height,
"data-file-width":width,
"data-file-height":height
})))))
))+mw.html.element('div',{'class':'gallerytext'},
new mw.html.Raw(mw.html.element('a',{'class':'galleryfilename galleryfilename-truncate','href':'/wiki/'+strona},pozycja)+width+' × '+height+'; '+size+mw.html.element('br')))
)
);
});
}
}).DodatkiSkryptThen(function(){
if(category_li){
var div=document.createElement('div');
div.innerHTML=element_wezla;
$(category_li[0]).before(div.firstChild);
czy_koniec=true;
}else{
if(category_a.length>0){
var div=document.createElement('div');
div.innerHTML=element_wezla;
var ul=$(category_a).closest((!czy_zagniezdzone)?('ul'):('div.CategoryTreeChildren'));
$(ul).append(div.firstChild);
czy_koniec=true;
}else{
if(!czy_zagniezdzone){
var element_wezla_pustego=mw.html.element('ul',((numer_porzadku==2)?{'class':'gallery mw-gallery-traditional'}:{}),new mw.html.Raw(element_wezla));
}else{
var element_wezla_pustego=element_wezla;
$(wezel).find(' > .CategoryTreeNotice').remove();
}
var div=document.createElement('div');
div.innerHTML=element_wezla_pustego;
if(numer_porzadku!=2){
$(wezel).append(div.firstChild);
}else{
$(kategorie||media).append(div.firstChild);
}
czy_koniec=true;
}
}
});
}
});
},null,muteks));
})(p,category_a);
}
return Promise.all(tab_promise);
})
}
this.DodawanieDoStrukturyKategoriiInneStronyZerowegoStopniaRozbudowy=function(pozycja,przestrzen,sortkey){
var ns_14=$('body.ns-14');
if(ns_14.length>0){
var tab={"Kategoria":0,"Plik":2,};
var numer_porzadku=(tab[przestrzen]!=undefined)?tab[przestrzen]:1;
pozycja=pozycja.charAt(0).toUpperCase()+pozycja.slice(1);
var id=((numer_porzadku==0)?('mw-subcategories'):((numer_porzadku==2)?('mw-category-media'):('mw-pages')));
var element_category_generated=$(DodatkiSkrypt.Szereg.IdCSS(3)).first()[0];
var pagename=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(DodatkiSkrypt.Info.page.pagename);
if(!element_category_generated){
element_category_generated=mw.html.element('div',{'class':'mw-category-generated','lang':'pl','dir':'ltr'},
new mw.html.Raw(mw.html.element('div',{'id':id,},
new mw.html.Raw(mw.html.element('h2',{},((numer_porzadku==0)?("Podkategorie"):((numer_porzadku==1)?("Strony w kategorii „"+pagename+"”"):("Pliki w kategorii „"+pagename+"”"))))+mw.html.element('p',{},((numer_porzadku==0)?("Poniżej wyświetlono 0 spośród wszystkich 0 podkategorii tej kategorii."):((numer_porzadku==1)?("Poniżej wyświetlono 0 spośród wszystkich 0 stron tej kategorii."):("Poniżej wyświetlono 0 spośród wszystkich 0 plików w tej kategorii. "))))+((numer_porzadku<2)?(mw.html.element('div',{'class':'mw-content-ltr','lang':'pl','dir':'ltr',},new mw.html.Raw(mw.html.element('div',{'class':'mw-category'},"")))):(""))))
)
);
var element_div=document.createElement('div');
element_div.innerHTML=element_category_generated;
var mw_content_text=document.querySelector(DodatkiSkrypt.Szereg.IdCSS(2));
var element=$(DodatkiSkrypt.Szereg.IdCSS(2)).find('> .mw-parser-output + :not(.mw-parser-output)').first()[0];
if(element){
element_category_generated=$(element).DodatkiSkryptBefore(element_div.firstChild)[0];
}else{
element_category_generated=$(mw_content_text).DodatkiSkryptAppend(element_div.firstChild)[0];
}
}else{
var sub=$(element_category_generated).children('p:only-child');
$(sub).remove();
var subcategories=$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #mw-subcategories').first()[0];
var pages=$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #mw-pages').first()[0];
var media=$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #mw-category-media').first()[0];
var kategorie=((numer_porzadku==0)?(subcategories):((numer_porzadku==1)?(pages):(media)));
if(!kategorie){
var kategorie=mw.html.element('div',{'id':id,},
new mw.html.Raw(mw.html.element('h2',{},((numer_porzadku==0)?("Podkategorie"):((numer_porzadku==1)?("Strony w kategorii „"+pagename+"”"):("Pliki w kategorii „"+pagename+"”"))))+mw.html.element('p',{},((numer_porzadku==0)?("Poniżej wyświetlono 0 spośród wszystkich 0 podkategorii tej kategorii."):((numer_porzadku==1)?("Poniżej wyświetlono 0 spośród wszystkich 0 stron tej kategorii."):("Poniżej wyświetlono 0 spośród wszystkich 0 plików w tej kategorii."))))+((numer_porzadku<2)?(mw.html.element('div',{'class':'mw-content-ltr','lang':'pl','dir':'ltr',},new mw.html.Raw(mw.html.element('div',{'class':'mw-category'},"")))):(""))));
var element_div=document.createElement('div');
element_div.innerHTML=kategorie;
if(numer_porzadku==0){
var node_firstchild=element_category_generated.firstChild;
if(node_firstchild){
kategorie=$(element_category_generated.firstChild).DodatkiSkryptBefore(element_div.firstChild);
}else{
kategorie=$(element_category_generated).DodatkiSkryptAppend(element_div.firstChild);
}
}else if(numer_porzadku==1){
if(media){
kategorie=$(media).DodatkiSkryptBefore(element_div.firstChild);
}else{
kategorie=$(element_category_generated).DodatkiSkryptAppend(element_div.firstChild);
}
}else{
kategorie=$(element_category_generated).DodatkiSkryptAppend(element_div.firstChild);
}
}
}
$(DodatkiSkrypt.Szereg.IdCSS(3)).find('> #'+id+' > p').first().DodatkiSkryptEach(function(i,element){
element.innerHTML=element.innerHTML.replace(/^([^\d]+)(\d+)([^\d]+)(\d+)([^\d]+)$/g,function(a,p1,l1,p2,l2,p3){
return p1+(parseInt(l1)+1)+p2+(parseInt(l2)+1)+p3;
})
})
var nazwa=sortkey+pozycja;
var wezel;
if(numer_porzadku!=2){
var alfabet=(new Array("A","Ą","B","C","Ć","D","E","Ę","F","G","H","I","J","K","L","Ł","M","N","Ń","O","Ó","P","Q","R","S","Ś","T","U","V","W","X","Y","Z","Ź","Ż")).sort().join("");
var pierwsza_litera=nazwa.charAt(0).toUpperCase();
var pozycja_litera=undefined;
var category_group_div=$(element_category_generated).find('> #'+id+' > *:last-child > .mw-category > .mw-category-group');
if(category_group_div.length>0){
var category_group_h3=$(category_group_div).find('> h3');
for(var i=0;i<category_group_h3.length;++i){
var element=category_group_h3[i];
var litera=element.innerHTML;
if(litera==pierwsza_litera){
pozycja_litera=litera;
break;
}
}
}
(function(pierwsza_litera){
for(var p=0;p<=category_group_div.length;++p){
if(p<category_group_div.length){
var h3=$(category_group_div[p]).find('> h3')[0];
var h3_tekst=h3.innerHTML;
for(var i=0;i<alfabet.length;++i){
var litera=alfabet.charAt(i);
var tabs=(new Array(litera,pierwsza_litera)).sort();
if(((!pozycja_litera)&&(litera==tabs[1]))||(pozycja_litera)&&(litera==pierwsza_litera)){
var tabs=(new Array(h3_tekst,pierwsza_litera)).sort();
if((!pozycja_litera)&&(pierwsza_litera==tabs[0])){
var element_wezel=category_group_div[p];
var __wezel=mw.html.element('div',{'class':'mw-category-group',},new mw.html.Raw(mw.html.element('h3',{'class':'is-only-whitespace'},litera)));
wezel=document.createElement('div');
wezel.innerHTML=__wezel;
if(element_wezel){
wezel=$(element_wezel).DodatkiSkryptBefore(wezel.firstChild);
return;
}else{
wezel=$(h3).parent().DodatkiSkryptAppend(wezel.firstChild);
return;
}
}else if((pozycja_litera)&&(h3_tekst==pierwsza_litera)){
wezel=$(category_group_div[p]);
return;
}
}
}
}else{
var pierwsza_litera=nazwa.charAt(0).toUpperCase();
var __wezel=mw.html.element('div',{'class':'mw-category-group',},new mw.html.Raw(mw.html.element('h3',{'class':'is-only-whitespace'},pierwsza_litera)));
wezel=document.createElement('div');
wezel.innerHTML=__wezel;
var category_group_all=$(element_category_generated).find('> #'+id+' > *:last-child > .mw-category').first()[0];
wezel=$(category_group_all).DodatkiSkryptAppend(wezel.firstChild);
return;
}
}
})(pierwsza_litera);
}
/**/;
return WstawPozycjeNaStronieKategoriiWedleDanychStron(DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(DodatkiSkrypt.Info.page.fullname),numer_porzadku,wezel,przestrzen,pozycja,nazwa,false,media,kategorie);
};
}
this.AktualizowanieInformacjiOKategoriiNaStronieKategoriowej=function(item){
var categoryTreebullet=((item==null)?$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories > * > .mw-category > .mw-category-group > ul > li > .CategoryTreeSection > .CategoryTreeItem'))):$(item).siblings('.CategoryTreeChildren').children(".CategoryTreeSection").children(".CategoryTreeItem"));
var tab_promise=new Array();
var muteks=new DodatkiSkrypt.Muteks();
var czy_modyfikacje_kategorii=false;
for(var i=0;i<categoryTreebullet.length;++i){
(function(i,categoryTreebullet){
var element=categoryTreebullet[i];
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var element_a0=$(element).find('a').first();
var element_a=$(element).find('a').not('.CategoryTreeToggle').first();
var href=$(element_a).attr('href');
href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href,true);
var href=href.replace(/^\/wiki\//g,"");
return IleJestKategoriiStronIPlikowWKategorii(href,function(ile_kategorii,ile_stron,ile_plikow){
if(ile_kategorii>0){
var str=$(element).siblings('.CategoryTreeChildren');
var display=window.getComputedStyle(str[0], null).getPropertyValue("display");
var str_kategoria=mw.html.element('span',{'class':'CategoryTreeBullet'},
new mw.html.Raw(mw.html.element('a',{'class':'CategoryTreeToggle','data-ct-title':href.replace(/^[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]:/g,"").replace(/[\s_]+/g,"_"),'aria-expanded':((display!="none")?"true":"false"),'title':((display!="none")?'zwiń':"rozwiń")},new mw.html.Raw(""))+" "));
}else{
var str_kategoria=mw.html.element('span',{'class':'CategoryTreeEmptyBullet'},"")
}
var span_full=$(element_a).closest('.CategoryTreeItem').find('span').first();
if((span_full!==null)&&(span_full.length>0)){
var str=$(span_full).parent();
var id=$(str).find('.CategoryTreeToggle');
var data=$(id).data("ct-loaded");
var aktualizacja=$(id).data("ct-aktualizacja");
span_full[0].outerHTML=str_kategoria;
var id=$(str).find('.CategoryTreeToggle');
$(id).data("ct-loaded",data);
$(id).data("ct-aktualizacja",((data)?true:aktualizacja));
}
var dzieci=$(element).children();
if(dzieci.length>2){
var span_ile=dzieci.last();
$(span_ile).attr({'title':"Zawiera "+ile_kategorii+" podkategorie, "+ile_stron+" stron i "+ile_plikow+" plików",'dir':'ltr'});
if(parseInt(ile_kategorii)+parseInt(ile_stron)+parseInt(ile_plikow)>0){
var tab=new Array();
if(ile_kategorii>0){
tab[tab.length]=ile_kategorii+" kat.";
}
if(ile_stron>0){
tab[tab.length]=ile_stron+" str.";
}
if(ile_plikow>0){
tab[tab.length]=ile_plikow+" pl.";
}
span_ile[0].innerHTML="("+tab.join(", ")+")";
}else{
span_ile[0].innerHTML="(pusta)";
}
}
czy_modyfikacje_kategorii=true;
});
},null,muteks));
})(i,categoryTreebullet);
}
return Promise.all(tab_promise).DodatkiSkryptThen(function(){
return Promise.resolve(czy_modyfikacje_kategorii);
});
}
var muteks_dodawania=new DodatkiSkrypt.Muteks();
this.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych=function(item){
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var ns_14=$('body.ns-14');
if(ns_14.length>0){
var muteks_zdarzenia=new DodatkiSkrypt.Muteks();
var tab_promise_zdarzenia=new Array();
var czy_modyfikacje_kategorii=undefined;
tab_promise_zdarzenia.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
if(!item){
var fullname=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(DodatkiSkrypt.Info.page.fullname);
}else{
var element_a=$(item).find('a').not('.CategoryTreeToggle').first();
var href=$(element_a).attr('href');
href=DodatkiSkrypt.Szereg.Kodowanie.DecodeHtml(href,true);
var fullname=DodatkiSkrypt.Szereg.Kodowanie.DecodeWiki(href.replace(/^\/wiki\//g,""));
}
var wartosc=DodatkiSkrypt.DodatkiSkryptUserOption.get(fullname,"CzłonkowieKategorii:");
return wartosc.DodatkiSkryptThen(function(data){
if(!data){return;}
var tab_strony=data.split("||");
var muteks=new DodatkiSkrypt.Muteks();
var tab_promise=new Array();
for(var i=0;i<tab_strony.length;++i){
(function(i,tab_strony){
var strona;var sortkey;var numer_porzadku;var przestrzen;var nazwa;
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var strona_sort=tab_strony[i];
var tab_strona_sort=strona_sort.split("|");
strona=tab_strona_sort[0];
sortkey=tab_strona_sort[1]||"";
var promise_przestrzen=DodatkiSkrypt.Scribunto.Nazwy.NAZWAPRZESTRZENI(strona);
var promise_pozycja=DodatkiSkrypt.Scribunto.Nazwy.NAZWASTRONY(strona);
return Promise.all([promise_przestrzen,promise_pozycja]).DodatkiSkryptThen(function(data){
przestrzen=data[0];pozycja=data[1];
if(!item){
return this_zmienna.DodawanieDoStrukturyKategoriiInneStronyZerowegoStopniaRozbudowy(pozycja,przestrzen,sortkey);
}else{
var tab={"Kategoria":0,"Plik":2,};
numer_porzadku=(tab[przestrzen]!=undefined)?tab[przestrzen]:1;
if(numer_porzadku==0){
var wezel=$(item).siblings('.CategoryTreeChildren');
return WstawPozycjeNaStronieKategoriiWedleDanychStron(fullname,0,wezel,przestrzen,pozycja,sortkey+pozycja,true,null,null);
}
}
});
},null,muteks));
tab_promise.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var tab={"Kategoria":0,"Plik":2,};
numer_porzadku=(tab[przestrzen]!=undefined)?tab[przestrzen]:1;
if((!item)||(numer_porzadku==0)){
czy_modyfikacje_kategorii=((czy_modyfikacje_kategorii)||(numer_porzadku==0));
return tabela_sortkey_promise[fullname][numer_porzadku].DodatkiSkryptThen(function(tablica_sortkey){
tablica_sortkey[strona]=sortkey;
});
}
},null,muteks));
})(i,tab_strony);
}
return Promise.all(tab_promise);
});
},null,muteks_zdarzenia));
tab_promise_zdarzenia.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return this_zmienna.AktualizowanieInformacjiOKategoriiNaStronieKategoriowej(item).DodatkiSkryptThen(function(data){
czy_modyfikacje_kategorii=data||czy_modyfikacje_kategorii;
});
},null,muteks_zdarzenia));
tab_promise_zdarzenia.push($(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var strfun=$(DodatkiSkrypt.Szereg.IdCSS(3,new Array(' > #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle')));
$(strfun).off('click');
if($(strfun).length>0){DodatkiSkrypt.requireFile('ext.categoryTree')();};
},null,muteks_zdarzenia));
return Promise.all(tab_promise_zdarzenia).DodatkiSkryptThen(function(){
return czy_modyfikacje_kategorii;
});
}
},null,muteks_dodawania);
}
this.UstawZdarzeniaKategoriiNaStronieKategoriowej=function(){
var muteks=new DodatkiSkrypt.Muteks();
var FunkcjaWstawianiaZdarzeniowychElementowychFunkcyjnych=function(){
var id=$(this);
return $(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
var item=$(id).parent().parent();
var promise=new Promise(function(resolve,reject){
var Czekaj=function(){
if($(id).data('ct-loaded')){resolve();}else{setTimeout(Czekaj,0);};
}
Czekaj();
});
promise.DodatkiSkryptThen(function(){
if(!$(id).data('ct-aktualizacja')){
$(id).data('ct-aktualizacja',true);
var czas=0;
var categoryTreeChildrenFun=function(resolve,reject){
var notice=$(id).parents('.CategoryTreeItem').siblings('.CategoryTreeChildren').children('.CategoryTreeNotice');
if((notice!==null)&&(notice.length>0)){
var komunikat=notice[0].innerHTML;
if((komunikat=="nic nie znaleziono")||(komunikat=="brak podkategorii")){
resolve("Dobrze");
return;
}
}
var el=$(id).parents('.CategoryTreeItem').siblings('.CategoryTreeChildren').children('.CategoryTreeSection');
if ((el!==null)&&(el.length>0)){resolve("Dobrze");}else{
if(czas>=30000){reject("Dobrze");}else{
setTimeout(function(){categoryTreeChildrenFun(resolve,reject);},300);
czas+=300;
}
}
}
$(document).DodatkiSkryptPromise(categoryTreeChildrenFun).DodatkiSkryptThen(function(){
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle'))).off('click');
return this_zmienna.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych(item).DodatkiSkryptThen(function(data){
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle'))).on('click', FunkcjaWstawianiaZdarzeniowychElementowychFunkcyjnych);
});
});
}
});
},null,muteks);
}
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeToggle','.CategoryTreeToggle'))).on('click', FunkcjaWstawianiaZdarzeniowychElementowychFunkcyjnych);
}
this.StartSubKategoriesStrona=function(muteks_strona){
if(gadget_uruchom_obsluge_kategorie){
var this_zmienna=this;
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
DodatkiSkrypt.DodatkiSkryptUserOption.set("Kategoria:Szablony z niejawnie błędnymi parametrami","Kategoria:Abłąd|Abłąd2||Kategoria:ZZAbłąd|ZZbłąd2||Kategoria:Szablony - błędy szablonów||Kategoria:Kategorie||Kategoria:Kategorie dla kategorii|Błędy p||Plik:Burza_mozgu.png||Plik:C.pdf|Ag||Plik:Zanurkuj w Pythonie.pdf|Ah","CzłonkowieKategorii:");
DodatkiSkrypt.DodatkiSkryptUserOption.set("Kategoria:Szablon kategoria - nieistniejąca kategoria","Wikipedysta:Persino/brudnopis1||Wikipedysta:Persino/brudnopis||Kategoria:Szablony - błędy szablonów||Kategoria:Kategorie||Plik:Burza_mozgu.png||Plik:C.pdf|Ag||Plik:Zanurkuj w Pythonie.pdf|Ah","CzłonkowieKategorii:");
//var this=new KategorieSubst.KategorieSubst();
var muteks_kategorie=new DodatkiSkrypt.Muteks();
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return this_zmienna.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych().DodatkiSkryptThen(function(){
var tab_promise=new Array();
$(DodatkiSkrypt.Szereg.IdCSS(3,new Array('> #mw-subcategories .CategoryTreeSection > .CategoryTreeItem'))).DodatkiSkryptEach(function(i,element){
tab_promise.push(this_zmienna.DodawanieDoStrukturyKategoriiStronyStronWedleZapisanychZmiennych(element,true));
});
return Promise.DodatkiSkryptAll(tab_promise);
});
},null,muteks_kategorie);
$(document).DodatkiSkryptGotowaFunkcjaMuteksowa(function(){
return this_zmienna.UstawZdarzeniaKategoriiNaStronieKategoriowej();
},null,muteks_kategorie);
},null,muteks_strona);
}
}
}
/*StronicowyParser.LinkiKategorii*/
var promise=new Promise(function(resolve,reject){
var Czekaj=function(){
if(window.DodatkiSkrypt){
resolve(window.DodatkiSkrypt);
}else{
setTimeout(Czekaj,0);
}
}
Czekaj();
});
promise.then(function(DodatkiSkrypt){
var DodatkiStrona=new Array();
DodatkiStrona.NumerSubst=NumerSubst;
DodatkiStrona.DymkiSubst=DymkiSubst;
DodatkiStrona.SzablonSubst=SzablonSubst;
DodatkiStrona.StronaSubst=StronaSubst;
DodatkiStrona.KategorieSubst=KategorieSubst;
window.DodatkiStrona=DodatkiStrona;
});
})(mediaWiki,jQuery);
g85296ue4pdv24iqfzlm7agir64torw
Pruski/Lekcja13
0
61048
542655
542489
2026-05-11T21:31:28Z
Aklbmd164
37133
542655
wikitext
text/x-wiki
'''<big>Lakciōni 13</big>'''
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35a> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Tworzenie nazw żeńskich ==
Nazwy żeńskie tworzy się w języku pruskim na trzy główne sposoby:<br>
* ''-tajs'' ⇒ ''-taja'', np. perdā<span style="color:red">tajs</span> ⇒ perdā<span style="color:red">taja</span>
* ''-s/-is'' ⇒ ''-ini'', np. bibliōtekar<span style="color:red">s</span> ⇒ bibliōtekar<span style="color:red">ini</span>, infōrmatiker<span style="color:red">is</span> ⇒ infōrmatiker<span style="color:red">ini</span>
* ''-is'' ⇒ ''-i'', np. mukinnew<span style="color:red">is</span> ⇒ mukinnew<span style="color:red">i</span>
Wyjątek: aktrīsi (aktorka)
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – Iść
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – Pracować
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
* '''En perejīngiskwai as kwāi wīrstwei...''' – W przyszłości chcę zostać...
* '''Etwinūis, kāigi as mazzi preikakīntun si prei autōbusadwaran/pustin/umnudin?''' – Przepraszam, jak mogę dotrzeć na dworzec autobusowy/na pocztę/do piekarni?
* '''Jaīs tikriskai be panzdau wartinnais si prei tikrai/kāirai''' – Idź prosto, a następnie skręć w prawo/lewo.
hmpb5btp9zjw1q35sw3eikw9cu50ats
Pruski/Lista najważniejszych czasowników
0
61081
542656
542508
2026-05-11T21:40:03Z
Aklbmd164
37133
/* P */
542656
wikitext
text/x-wiki
== A ==
* aubīrgtun <82> – ugotować
* aūgtwei <82> – rosnąć
* aulaūtwei <144> – umrzeć, umierać
* aumestun <71> – upuścić; zgubić; stracić
* aupaltun <82> – znaleźć
* aušaūtun <144> – pożyczyć (komuś)
* aušaūtun si <144> – pożyczyć (od kogoś)
* auwertun <75> – zamknąć, zamykać
== B ==
* bandātwei <141> – próbować
* bijātun <141> – bać się
* bilītun <134> – mówić, powiedzieć
* bīrgintun <82> – gotować
* breūtun <111> – pchać, pchnąć (do przodu)
* būtwei <115> – być
* buccautun/buccautun si <143> – całować/całować się
* buwīntwei <82> – mieszkać
== D ==
* dāncautwei <143> – tańczyć
* dātun <118> – dać, dawać; pozwolić
* dēlbtun <75> – bić
* dergītun <134> – nienawidzić
* dīlatwei <131> – pracować, działać
* dirītwei <134> – patrzeć
* druwītwei <134> – wierzyć
== E ==
* ebdirītun <134> – oglądać, obejrzeć
* ebtiktun/ebtiktun si <82> – spotkać, spotykać/spotkać się, spotykać się
* ebwarītun <134> – zwyciężyć, wygrać, pokonać
* ēitwei <116> – iść, chodzić
** enēitwei – wejść, wchodzić
** izēitwei – wyjść, wychodzić
** perēitwei – przyjść, przychodzić, przybyć
* etbustwei <82> – obudzić się
* etrātwei <132> – odpowiadać, odpowiedzieć (np. na pytanie)
* etskītwei <120> – wstać, wstawać
* etwartīntun si <82> – wrócić, wracać
* etwertun <75>, etwirītun <139> – otworzyć, otwierać
== G ==
* galīntun <82> – zabić, zabijać
* gēistwei <75> – czekać
* gīmtwei <82> – urodzić się
* giwītwei <140> – żyć
* glaubātun <132> – rysować
* gremtun <75> – śpiewać
* gultwei <82> – boleć
* gūztun <71> – wyrzucić, wyrzucać
== I ==
* iľgitun si <135> – tęsknić
* īmtun <71> – wziąć, brać
** etīmtun – zabrać, odebrać
* īstun <117> – jeść
* izgūztwei <71> – robić kupę
* izmīrstun <82> – zapomnieć
* izprestun <82> – rozumieć
* izrīnktun <82> – wybrać, wybierać
* iztengīntun <82> – wysłać, wysyłać
== J ==
* jadātwei <132> – jeździć
* jātwei <119> – jechać
** izjātwei – wyjechać
** perjātwei – przyjechać
* justun <76> – czuć, odczuwać
== K ==
* kabīntun <82> – powiesić, wieszać
* kaštūtwei <113> – kosztować (o cenie)
* kāuptun <75> – kupić, kupować
* kāusintun <82> – dotykać
* kirdītun <137> – słyszeć
* kitawīdintun <82> – zmieniać
* klausītun <134> – słuchać
* klaūtun <144> – zamknąć, zamykać (na klucz)
* krīkstwei <75> – krzyczeć
* krūtwei <113> – spadać, upadać
* kwaitītun <134> – chcieć, życzyć
== L ==
* laikātun <141> – trzymać
* lanzītwei <136> – leżeć
* lātwei <119> – szczekać
* laukītun <139> – szukać
* lazīntun <82> – kłaść, ułożyć, położyć
* laztwei <82> – kłaść się, położyć się
* līztwei <75> – wspinać się, wchodzić, włazić
== M ==
* madlītun <140> – modlić się, prosić
* mazītwei <137> – móc
* migītwei <136> – spać
* milītun <137> – kochać
* minītun <139> – pamiętać
* mīritwei <138> – myśleć
* mīztwei <82> – robić siku
* mukīntun/mukīntun si <82> – uczyć/uczyć się
* mukītun <136> – umieć, potrafić
* mūtun/mūtun si <113> – myć/myć się
== N ==
* nadruwītwei <134> – mieć nadzieję, spodziewać się
* neikaūtwei <144> – spacerować, przechadzać się
== P ==
* padīngtwei <82> – podobać się, lubić
* pagadīntun <82> – popsuć, zepsuć
* pagalbtwei <82> – pomóc, pomagać
* pagaūtun <111> – dostać; zacząć, rozpocząć
* paglabātun <132> – głaskać, pieścić
* palaīstun <75> – zostawić
* palāiktwei <82>, paliktwei <82> – zostać, pozostać, pozostawać
* pastātwei <110> – stać się (coś), zostać (o kimś, czymś w stronie biernej)
* peisātun <132> – pisać
* perbandātun <141> – doświadczyć, wypróbować, sprawdzić
* perdātun <118> – sprzedać, sprzedawać
* perlānktwei <75> – należeć
* perpīstun <82> – przynieść, przynosić
* pīstun <71> – nieść, nosić
* pjaūtun <111> – ciąć, kroić
* platītwei <137> – płacić
* plūtwei <113> – pływać
* prasītun <139> – pytać
* prawerru → potrzeba; powinność, np.:
** ''Mennei prawerru pagalban'' – Potrzebuję pomocy
** ''Tebbei prawerru pagalbtwei mi'' – Powinieneś mi pomóc
** ''Mennei pagalba bēi prawerīngi'' – Potrzebowałem pomocy
** ''Tebbei bēi prawerru pagalbtwei mi'' – Powinieneś był mi pomóc
** ''Mennei pagalba wīrst būwusi prawerīngi'' – Będzie mi potrzebna pomoc.
* preiglabtun/preiglabtun si <75> – przytulić/przytulić się
* pūtun <113> – pić
== R ==
* rāngtun <82> – kraść
* raudātwei <132> – płakać
* rīnktun <82> – zbierać
== S ==
* sadīntun <82> – położyć, postawić, umieścić, sadzić
* salūbitun <138> – ożenić się, wyjść za mąż, brać ślub, poślubić
* segītun <134> – robić, czynić
* sindītwei <136> – siedzieć
* skaitātun <132> – czytać
* skistīntun <82> – czyścić, sprzątać
* skrāistwei <82> – latać
* smeītun si <107> – śmiać się
* smijātun si <132> – uśmiechać się
* spīlitun <133> – bawić się, grać
* stalītwei <134> – stać
* štīritun <133> – prowadzić, kierować (pojazd)
* supnaūtun <144> – śnić, marzyć
== T ==
* teikātun <132> – porządkować; sprzątać
* teīktun <75> – tworzyć, stworzyć
* telafōnitwei <138> – dzwonić (przez telefon)
* tēnstun <75> – ciągnąć, pociągnąć
* tērpautun <143> – używać, korzystać
* tikīntun <82> – robić, produkować, wytwarzać
* turītun <137> – mieć; musieć
== W ==
* waidīntun <82> – pokazać, pokazywać
* waīstun <82> – wiedzieć
* waițātwei <132> – rozmawiać
* wangīntun/wangīntun si <82> – kończyć, skończyć/kończyć się, skończyć się
* wektwei <75> – wołać, krzyczeć
* westun <71> – prowadzić (kogoś)
* widātun <141> – widzieć, zobaczyć
* wīrstwei <114> – stać się, zostać (kimś)
* wūstun <75> – wąchać
== Z ==
* zēistun <75> – budować
* zinātun <141> – znać, poznawać
kryrwnlmamvygyx516lp1qvuft0ikky
Pruski/Lekcja22
0
61096
542649
542499
2026-05-11T21:17:39Z
Aklbmd164
37133
/* Czas teraźniejszy i przeszły */
542649
wikitext
text/x-wiki
'''<big>Lakciōni 22</big>'''
== Czasowniki ==
Pruskie czasowniki w bezokoliczniku mogą mieć jedną z końcówek: ''-tun'' albo ''-twei''. Końcówka ''-tun'' oznacza czasownik przechodni, czyli taki z którego można utworzyć stronę bierną, a ''-twei'' czasownik nieprzechodni.
== Czasy ==
=== Czas teraźniejszy i przeszły ===
Form czasu teraźniejszego i przeszłego będziemy się uczyć korzystając ze schematów odmian, które będziemy poznawali w następnych lekcjach.
<br>
Często się zdarza, że formy czasownika w cz. teraźniejszym i przeszłym są takie same, i jeśli kontekst nie wskazuje, jaki to czas, możemy użyć odmienionego przez rodzaj i liczbę imiesłowu czynnego czasu przeszłego (w słowniku jest to ''pragūbiniskas aktīws'', o tym, jak go odmieniać, nauczymy się na osobnej lekcji), np. ''As segīwuns/segīwusi'' (Ja robiłem/robiłam).
=== Czas przyszły ===
Jego budowa to odmieniony przez osobę czasownik posiłkowy ''wīrstwei'' w cz. teraźniejszym:
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''wīrst'''
|-
|Tū '''wīrst'''
|-
|Tāns/Tenā/Sta '''wīrst'''
|-
|Mes '''wīrstmai'''
|-
|Jūs '''wīrstei'''
|-
|Tenēi/Tennas '''wīrst'''
|}
<noinclude>
oraz odmieniony przez rodzaj i liczbę imiesłów czynny czasu przeszłego, np. As wīrst segīwuns/segīwusi. – Ja będę robił/robiła.
<br>
Uwaga! Zwróć uwagę na kolejność wyrazów w pytaniu, np. Wīrst tū segīwuns? oraz w przeczeniu, np. As ni wīrst segīwuns.
Taka sama kolejność występuje w budowie czasu perfekt.
=== Czas perfekt ===
Czasu perfekt używamy, kiedy coś się wydarzyło w przeszłości, ale skutki są widoczne w teraźniejszości.
<br>
Jego budowa to odmieniony przez osobę czasownik posiłkowy ''būtwei'' w cz. teraźniejszym oraz odmieniony przez rodzaj i liczbę imiesłów czynny czasu przeszłego, np. As asma jāu segīwuns/segīwusi stan. – Już to zrobiłem/zrobiłam.
== Odmiany od <115> do <119> ==
Czasowniki, które odmieniają się tymi schematami, są bardzo często używane i mają nieregularną odmianę.
* '''būtwei''' – być
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|as<span style="color:red">ma</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|as<span style="color:red">sei</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|as<span style="color:red">t</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|as<span style="color:red">mai</span>
| align="center"|bēimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|as<span style="color:red">tei</span>
| align="center"|bēitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|as<span style="color:red">t</span>
| align="center"|bēi
|}
* '''ēitwei''' – iść
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|ēi<span style="color:red">ma</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|ēi<span style="color:red">sei</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|ēi<span style="color:red">t</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|ēi<span style="color:red">mai</span>
| align="center"|gūbimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|ēi<span style="color:red">tei</span>
| align="center"|gūbitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|ēi<span style="color:red">t</span>
| align="center"|gūbi
|}
* '''īstun''' – jeść
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|ī<span style="color:red">ma</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|ī<span style="color:red">sei</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|īs<span style="color:red">t</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|ī<span style="color:red">mai</span>
| align="center"|īdamai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|ī<span style="color:red">tei</span>
| align="center"|īdatei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|īs<span style="color:red">t</span>
| align="center"|īda
|}
* '''dātun''' – dać, dawać
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|dā<span style="color:red">ma</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|dā<span style="color:red">sei</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|dās<span style="color:red">t</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|dā<span style="color:red">mai</span>
| align="center"|dāimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|dā<span style="color:red">tei</span>
| align="center"|dāitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|dās<span style="color:red">t</span>
| align="center"|dāi
|}
* '''jātwei''' – jechać
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|jā<span style="color:red">ma</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|jā<span style="color:red">sei</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|jā<span style="color:red">t</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|jā<span style="color:red">mai</span>
| align="center"|jājamai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|jā<span style="color:red">tei</span>
| align="center"|jājatei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|jā<span style="color:red">t</span>
| align="center"|jāja
|}
mxaw8grt1ldxxt39am3j1smeoh5wtr9
542650
542649
2026-05-11T21:20:57Z
Aklbmd164
37133
/* Czas przyszły */
542650
wikitext
text/x-wiki
'''<big>Lakciōni 22</big>'''
== Czasowniki ==
Pruskie czasowniki w bezokoliczniku mogą mieć jedną z końcówek: ''-tun'' albo ''-twei''. Końcówka ''-tun'' oznacza czasownik przechodni, czyli taki z którego można utworzyć stronę bierną, a ''-twei'' czasownik nieprzechodni.
== Czasy ==
=== Czas teraźniejszy i przeszły ===
Form czasu teraźniejszego i przeszłego będziemy się uczyć korzystając ze schematów odmian, które będziemy poznawali w następnych lekcjach.
<br>
Często się zdarza, że formy czasownika w cz. teraźniejszym i przeszłym są takie same, i jeśli kontekst nie wskazuje, jaki to czas, możemy użyć odmienionego przez rodzaj i liczbę imiesłowu czynnego czasu przeszłego (w słowniku jest to ''pragūbiniskas aktīws'', o tym, jak go odmieniać, nauczymy się na osobnej lekcji), np. ''As segīwuns/segīwusi'' (Ja robiłem/robiłam).
=== Czas przyszły ===
Jego budowa to odmieniony przez osobę czasownik posiłkowy ''wīrstwei'' w cz. teraźniejszym:
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''wīrst'''
|-
|Tū '''wīrst'''
|-
|Tāns/Tenā/Sta '''wīrst'''
|-
|Mes '''wīrstmai'''
|-
|Jūs '''wīrstei'''
|-
|Tenēi/Tennas '''wīrst'''
|}
<noinclude>
oraz odmieniony przez rodzaj i liczbę imiesłów czynny czasu przeszłego, np. ''As wīrst segīwuns/segīwusi'' (Ja będę robił/robiła).
<br>
Uwaga! Zwróć uwagę na szyk pytania i przeczenia, np.:
* Wīrst tū segīwuns? – Będziesz robił?
* As ni wīrst segīwuns. – Nie będę robił.
Taka sama kolejność występuje w budowie czasu perfekt.
=== Czas perfekt ===
Czasu perfekt używamy, kiedy coś się wydarzyło w przeszłości, ale skutki są widoczne w teraźniejszości.
<br>
Jego budowa to odmieniony przez osobę czasownik posiłkowy ''būtwei'' w cz. teraźniejszym oraz odmieniony przez rodzaj i liczbę imiesłów czynny czasu przeszłego, np. As asma jāu segīwuns/segīwusi stan. – Już to zrobiłem/zrobiłam.
== Odmiany od <115> do <119> ==
Czasowniki, które odmieniają się tymi schematami, są bardzo często używane i mają nieregularną odmianę.
* '''būtwei''' – być
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|as<span style="color:red">ma</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|as<span style="color:red">sei</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|as<span style="color:red">t</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|as<span style="color:red">mai</span>
| align="center"|bēimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|as<span style="color:red">tei</span>
| align="center"|bēitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|as<span style="color:red">t</span>
| align="center"|bēi
|}
* '''ēitwei''' – iść
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|ēi<span style="color:red">ma</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|ēi<span style="color:red">sei</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|ēi<span style="color:red">t</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|ēi<span style="color:red">mai</span>
| align="center"|gūbimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|ēi<span style="color:red">tei</span>
| align="center"|gūbitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|ēi<span style="color:red">t</span>
| align="center"|gūbi
|}
* '''īstun''' – jeść
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|ī<span style="color:red">ma</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|ī<span style="color:red">sei</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|īs<span style="color:red">t</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|ī<span style="color:red">mai</span>
| align="center"|īdamai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|ī<span style="color:red">tei</span>
| align="center"|īdatei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|īs<span style="color:red">t</span>
| align="center"|īda
|}
* '''dātun''' – dać, dawać
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|dā<span style="color:red">ma</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|dā<span style="color:red">sei</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|dās<span style="color:red">t</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|dā<span style="color:red">mai</span>
| align="center"|dāimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|dā<span style="color:red">tei</span>
| align="center"|dāitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|dās<span style="color:red">t</span>
| align="center"|dāi
|}
* '''jātwei''' – jechać
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|jā<span style="color:red">ma</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|jā<span style="color:red">sei</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|jā<span style="color:red">t</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|jā<span style="color:red">mai</span>
| align="center"|jājamai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|jā<span style="color:red">tei</span>
| align="center"|jājatei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|jā<span style="color:red">t</span>
| align="center"|jāja
|}
hhsluam8mrzy60k6y0t6xgvpnngnph0
542651
542650
2026-05-11T21:21:46Z
Aklbmd164
37133
/* Czas przyszły */
542651
wikitext
text/x-wiki
'''<big>Lakciōni 22</big>'''
== Czasowniki ==
Pruskie czasowniki w bezokoliczniku mogą mieć jedną z końcówek: ''-tun'' albo ''-twei''. Końcówka ''-tun'' oznacza czasownik przechodni, czyli taki z którego można utworzyć stronę bierną, a ''-twei'' czasownik nieprzechodni.
== Czasy ==
=== Czas teraźniejszy i przeszły ===
Form czasu teraźniejszego i przeszłego będziemy się uczyć korzystając ze schematów odmian, które będziemy poznawali w następnych lekcjach.
<br>
Często się zdarza, że formy czasownika w cz. teraźniejszym i przeszłym są takie same, i jeśli kontekst nie wskazuje, jaki to czas, możemy użyć odmienionego przez rodzaj i liczbę imiesłowu czynnego czasu przeszłego (w słowniku jest to ''pragūbiniskas aktīws'', o tym, jak go odmieniać, nauczymy się na osobnej lekcji), np. ''As segīwuns/segīwusi'' (Ja robiłem/robiłam).
=== Czas przyszły ===
Jego budowa to odmieniony przez osobę czasownik posiłkowy ''wīrstwei'' w cz. teraźniejszym:
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''wīrst'''
|-
|Tū '''wīrst'''
|-
|Tāns/Tenā/Sta '''wīrst'''
|-
|Mes '''wīrstmai'''
|-
|Jūs '''wīrstei'''
|-
|Tenēi/Tennas '''wīrst'''
|}
<noinclude>
oraz odmieniony przez rodzaj (który odpowiada rodzajowi podmiotu) i liczbę imiesłów czynny czasu przeszłego, np. ''As wīrst segīwuns/segīwusi'' (Ja będę robił/robiła).
<br>
Uwaga! Zwróć uwagę na szyk pytania i przeczenia, np.:
* Wīrst tū segīwuns? – Będziesz robił?
* As ni wīrst segīwuns. – Nie będę robił.
Taka sama kolejność występuje w budowie czasu perfekt.
=== Czas perfekt ===
Czasu perfekt używamy, kiedy coś się wydarzyło w przeszłości, ale skutki są widoczne w teraźniejszości.
<br>
Jego budowa to odmieniony przez osobę czasownik posiłkowy ''būtwei'' w cz. teraźniejszym oraz odmieniony przez rodzaj i liczbę imiesłów czynny czasu przeszłego, np. As asma jāu segīwuns/segīwusi stan. – Już to zrobiłem/zrobiłam.
== Odmiany od <115> do <119> ==
Czasowniki, które odmieniają się tymi schematami, są bardzo często używane i mają nieregularną odmianę.
* '''būtwei''' – być
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|as<span style="color:red">ma</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|as<span style="color:red">sei</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|as<span style="color:red">t</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|as<span style="color:red">mai</span>
| align="center"|bēimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|as<span style="color:red">tei</span>
| align="center"|bēitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|as<span style="color:red">t</span>
| align="center"|bēi
|}
* '''ēitwei''' – iść
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|ēi<span style="color:red">ma</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|ēi<span style="color:red">sei</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|ēi<span style="color:red">t</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|ēi<span style="color:red">mai</span>
| align="center"|gūbimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|ēi<span style="color:red">tei</span>
| align="center"|gūbitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|ēi<span style="color:red">t</span>
| align="center"|gūbi
|}
* '''īstun''' – jeść
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|ī<span style="color:red">ma</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|ī<span style="color:red">sei</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|īs<span style="color:red">t</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|ī<span style="color:red">mai</span>
| align="center"|īdamai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|ī<span style="color:red">tei</span>
| align="center"|īdatei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|īs<span style="color:red">t</span>
| align="center"|īda
|}
* '''dātun''' – dać, dawać
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|dā<span style="color:red">ma</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|dā<span style="color:red">sei</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|dās<span style="color:red">t</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|dā<span style="color:red">mai</span>
| align="center"|dāimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|dā<span style="color:red">tei</span>
| align="center"|dāitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|dās<span style="color:red">t</span>
| align="center"|dāi
|}
* '''jātwei''' – jechać
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|jā<span style="color:red">ma</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|jā<span style="color:red">sei</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|jā<span style="color:red">t</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|jā<span style="color:red">mai</span>
| align="center"|jājamai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|jā<span style="color:red">tei</span>
| align="center"|jājatei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|jā<span style="color:red">t</span>
| align="center"|jāja
|}
bx1nrx7e0gkds23cd1lyh808fwgpyeq
542652
542651
2026-05-11T21:23:53Z
Aklbmd164
37133
/* Czas perfekt */
542652
wikitext
text/x-wiki
'''<big>Lakciōni 22</big>'''
== Czasowniki ==
Pruskie czasowniki w bezokoliczniku mogą mieć jedną z końcówek: ''-tun'' albo ''-twei''. Końcówka ''-tun'' oznacza czasownik przechodni, czyli taki z którego można utworzyć stronę bierną, a ''-twei'' czasownik nieprzechodni.
== Czasy ==
=== Czas teraźniejszy i przeszły ===
Form czasu teraźniejszego i przeszłego będziemy się uczyć korzystając ze schematów odmian, które będziemy poznawali w następnych lekcjach.
<br>
Często się zdarza, że formy czasownika w cz. teraźniejszym i przeszłym są takie same, i jeśli kontekst nie wskazuje, jaki to czas, możemy użyć odmienionego przez rodzaj i liczbę imiesłowu czynnego czasu przeszłego (w słowniku jest to ''pragūbiniskas aktīws'', o tym, jak go odmieniać, nauczymy się na osobnej lekcji), np. ''As segīwuns/segīwusi'' (Ja robiłem/robiłam).
=== Czas przyszły ===
Jego budowa to odmieniony przez osobę czasownik posiłkowy ''wīrstwei'' w cz. teraźniejszym:
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''wīrst'''
|-
|Tū '''wīrst'''
|-
|Tāns/Tenā/Sta '''wīrst'''
|-
|Mes '''wīrstmai'''
|-
|Jūs '''wīrstei'''
|-
|Tenēi/Tennas '''wīrst'''
|}
<noinclude>
oraz odmieniony przez rodzaj (który odpowiada rodzajowi podmiotu) i liczbę imiesłów czynny czasu przeszłego, np. ''As wīrst segīwuns/segīwusi'' (Ja będę robił/robiła).
<br>
Uwaga! Zwróć uwagę na szyk pytania i przeczenia, np.:
* Wīrst tū segīwuns? – Będziesz robił?
* As ni wīrst segīwuns. – Nie będę robił.
Taka sama kolejność występuje w budowie czasu perfekt.
=== Czas perfekt ===
Czasu perfekt używamy, kiedy coś się wydarzyło w przeszłości, ale skutki są widoczne w teraźniejszości.
<br>
Jego budowa to odmieniony przez osobę czasownik posiłkowy ''būtwei'' w cz. teraźniejszym oraz odmieniony przez rodzaj i liczbę imiesłów czynny czasu przeszłego, np.:
* As asma jāu segīwuns stan. – Już to zrobiłem.
* Tenā ast jāu pergūbusi. – Ona już przyszła.
== Odmiany od <115> do <119> ==
Czasowniki, które odmieniają się tymi schematami, są bardzo często używane i mają nieregularną odmianę.
* '''būtwei''' – być
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|as<span style="color:red">ma</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|as<span style="color:red">sei</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|as<span style="color:red">t</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|as<span style="color:red">mai</span>
| align="center"|bēimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|as<span style="color:red">tei</span>
| align="center"|bēitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|as<span style="color:red">t</span>
| align="center"|bēi
|}
* '''ēitwei''' – iść
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|ēi<span style="color:red">ma</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|ēi<span style="color:red">sei</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|ēi<span style="color:red">t</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|ēi<span style="color:red">mai</span>
| align="center"|gūbimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|ēi<span style="color:red">tei</span>
| align="center"|gūbitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|ēi<span style="color:red">t</span>
| align="center"|gūbi
|}
* '''īstun''' – jeść
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|ī<span style="color:red">ma</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|ī<span style="color:red">sei</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|īs<span style="color:red">t</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|ī<span style="color:red">mai</span>
| align="center"|īdamai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|ī<span style="color:red">tei</span>
| align="center"|īdatei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|īs<span style="color:red">t</span>
| align="center"|īda
|}
* '''dātun''' – dać, dawać
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|dā<span style="color:red">ma</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|dā<span style="color:red">sei</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|dās<span style="color:red">t</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|dā<span style="color:red">mai</span>
| align="center"|dāimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|dā<span style="color:red">tei</span>
| align="center"|dāitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|dās<span style="color:red">t</span>
| align="center"|dāi
|}
* '''jātwei''' – jechać
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|jā<span style="color:red">ma</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|jā<span style="color:red">sei</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|jā<span style="color:red">t</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|jā<span style="color:red">mai</span>
| align="center"|jājamai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|jā<span style="color:red">tei</span>
| align="center"|jājatei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|jā<span style="color:red">t</span>
| align="center"|jāja
|}
t842abss6jq3v0712hzb0gxz9f3w3lt
542653
542652
2026-05-11T21:25:50Z
Aklbmd164
37133
/* Czas perfekt */
542653
wikitext
text/x-wiki
'''<big>Lakciōni 22</big>'''
== Czasowniki ==
Pruskie czasowniki w bezokoliczniku mogą mieć jedną z końcówek: ''-tun'' albo ''-twei''. Końcówka ''-tun'' oznacza czasownik przechodni, czyli taki z którego można utworzyć stronę bierną, a ''-twei'' czasownik nieprzechodni.
== Czasy ==
=== Czas teraźniejszy i przeszły ===
Form czasu teraźniejszego i przeszłego będziemy się uczyć korzystając ze schematów odmian, które będziemy poznawali w następnych lekcjach.
<br>
Często się zdarza, że formy czasownika w cz. teraźniejszym i przeszłym są takie same, i jeśli kontekst nie wskazuje, jaki to czas, możemy użyć odmienionego przez rodzaj i liczbę imiesłowu czynnego czasu przeszłego (w słowniku jest to ''pragūbiniskas aktīws'', o tym, jak go odmieniać, nauczymy się na osobnej lekcji), np. ''As segīwuns/segīwusi'' (Ja robiłem/robiłam).
=== Czas przyszły ===
Jego budowa to odmieniony przez osobę czasownik posiłkowy ''wīrstwei'' w cz. teraźniejszym:
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''wīrst'''
|-
|Tū '''wīrst'''
|-
|Tāns/Tenā/Sta '''wīrst'''
|-
|Mes '''wīrstmai'''
|-
|Jūs '''wīrstei'''
|-
|Tenēi/Tennas '''wīrst'''
|}
<noinclude>
oraz odmieniony przez rodzaj (który odpowiada rodzajowi podmiotu) i liczbę imiesłów czynny czasu przeszłego, np. ''As wīrst segīwuns/segīwusi'' (Ja będę robił/robiła).
<br>
Uwaga! Zwróć uwagę na szyk pytania i przeczenia, np.:
* Wīrst tū segīwuns? – Będziesz robił?
* As ni wīrst segīwuns. – Nie będę robił.
Taka sama kolejność występuje w budowie czasu perfekt.
=== Czas perfekt ===
Czasu perfekt używamy, kiedy coś się wydarzyło w przeszłości, ale skutki są widoczne w teraźniejszości.
<br>
Jego budowa to odmieniony przez osobę czasownik posiłkowy ''būtwei'' w cz. teraźniejszym oraz odmieniony przez rodzaj i liczbę imiesłów czynny czasu przeszłego, np.:
* As jāu asma segīwuns stan. – Już to zrobiłem.
* Tenā jāu ast pergūbusi. – Ona już przyszła.
== Odmiany od <115> do <119> ==
Czasowniki, które odmieniają się tymi schematami, są bardzo często używane i mają nieregularną odmianę.
* '''būtwei''' – być
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|as<span style="color:red">ma</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|as<span style="color:red">sei</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|as<span style="color:red">t</span>
| align="center"|bēi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|as<span style="color:red">mai</span>
| align="center"|bēimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|as<span style="color:red">tei</span>
| align="center"|bēitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|as<span style="color:red">t</span>
| align="center"|bēi
|}
* '''ēitwei''' – iść
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|ēi<span style="color:red">ma</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|ēi<span style="color:red">sei</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|ēi<span style="color:red">t</span>
| align="center"|gūbi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|ēi<span style="color:red">mai</span>
| align="center"|gūbimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|ēi<span style="color:red">tei</span>
| align="center"|gūbitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|ēi<span style="color:red">t</span>
| align="center"|gūbi
|}
* '''īstun''' – jeść
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|ī<span style="color:red">ma</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|ī<span style="color:red">sei</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|īs<span style="color:red">t</span>
| align="center"|īda
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|ī<span style="color:red">mai</span>
| align="center"|īdamai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|ī<span style="color:red">tei</span>
| align="center"|īdatei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|īs<span style="color:red">t</span>
| align="center"|īda
|}
* '''dātun''' – dać, dawać
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|dā<span style="color:red">ma</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|dā<span style="color:red">sei</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|dās<span style="color:red">t</span>
| align="center"|dāi
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|dā<span style="color:red">mai</span>
| align="center"|dāimai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|dā<span style="color:red">tei</span>
| align="center"|dāitei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|dās<span style="color:red">t</span>
| align="center"|dāi
|}
* '''jātwei''' – jechać
{| class="wikitable"
!
! <span style="font-weight: normal;">Czas teraźniejszy</span>
! <span style="font-weight: normal;">Czas przeszły</span>
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lp.
| align="center"|jā<span style="color:red">ma</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lp.
| align="center"|jā<span style="color:red">sei</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lp.
| align="center"|jā<span style="color:red">t</span>
| align="center"|jāja
|-
| style="padding: 0 1.5em; text-align: center;" |1. os. lm.
| align="center"|jā<span style="color:red">mai</span>
| align="center"|jājamai
|-
| style="padding: 0 1.5em; text-align: center;" |2. os. lm.
| align="center"|jā<span style="color:red">tei</span>
| align="center"|jājatei
|-
| style="padding: 0 1.5em; text-align: center;" |3. os. lm.
| align="center"|jā<span style="color:red">t</span>
| align="center"|jāja
|}
3lkltih67b8ukkuzx3cxqqdzq3kgoja
Pruski/Lekcja30
0
61539
542642
542507
2026-05-11T20:53:56Z
Aklbmd164
37133
/* Czasownik + przymiotnik */
542642
wikitext
text/x-wiki
'''<big>Lakciōni 30</big>'''
== Odmiana przymiotników ==
Przymiotniki odmieniają się według schematów od <25> do <31>. Na dzisiejszej lekcji poznasz schematy <25> i <26>, które mają podobną odmianę jak rzeczowniki.
== <25> ==
Tym schematem odmieniają się przymiotniki zakończone spółgłoską + literą ''s'' oraz przymiotniki zakończone na ''-iskas''.
* Przykład odmiany ''debīks'' (duży):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">s</span>
| debīk<span style="color:red">a</span>
| debīk<span style="color:red">an</span>
|-
| Dopełniacz
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
|-
| Celownik
| debīk<span style="color:red">asmu</span>
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">asmu</span>
|-
| Biernik
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">ai</span>
|-
| Dopełniacz
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
| Celownik
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
|-
| Biernik
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
|}
* Przykład odmiany ''na<u>w</u>s'' (nowy):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naw<span style="color:red">s</span>
| na<u>ww</u><span style="color:red">a</span>
| naww<span style="color:red">an</span>
|-
| Dopełniacz
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
|-
| Celownik
| naww<span style="color:red">asmu</span>
| naww<span style="color:red">ai</span>
| naww<span style="color:red">asmu</span>
|-
| Biernik
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naww<span style="color:red">ai</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">ai</span>
|-
| Dopełniacz
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
| Celownik
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
|-
| Biernik
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
|}
== <26> ==
Tym schematem odmieniają się często używane przymiotniki zakończone spółgłoską + literą ''s''.
* Przykład odmiany ''wārgs'' (zły):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| wārg<span style="color:red">s</span>
| warg<span style="color:red">ā</span>
| wārg<span style="color:red">an</span>
|-
| Dopełniacz
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
|-
| Celownik
| warg<span style="color:red">àsmu</span>
| wārg<span style="color:red">ai</span>
| warg<span style="color:red">àsmu</span>
|-
| Biernik
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| warg<span style="color:red">āi</span>
| wārg<span style="color:red">as</span>
| warg<span style="color:red">āi</span>
|-
| Dopełniacz
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
| Celownik
| warg<span style="color:red">ammans</span>
| warg<span style="color:red">āmans</span>
| warg<span style="color:red">ammans</span>
|-
| Biernik
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
|}
* Przykład odmiany ''la<u>b</u>s'' (dobry):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">s</span>
| lab<span style="color:red">ā</span>
| la<u>bb</u></span><span style="color:red">an</span>
|-
| Dopełniacz
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
|-
| Celownik
| lab<span style="color:red">àsmu</span>
| labb<span style="color:red">ai</span>
| lab<span style="color:red">àsmu</span>
|-
| Biernik
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">āi</span>
| labb<span style="color:red">as</span>
| lab<span style="color:red">āi</span>
|-
| Dopełniacz
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
| Celownik
| lab<span style="color:red">ammans</span>
| lab<span style="color:red">āmans</span>
| lab<span style="color:red">ammans</span>
|-
| Biernik
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
|}
== Czasownik łącznikowy + przymiotnik ==
Jeśli przymiotnik nie opisuje bezpośrednio rzeczownika, ale łączy się z czasownikiem łącznikowym (np. ''być'', ''zostać''), wtedy zawsze powinien być w formie rodzaju nijakiego l. pojedynczej, np.:
* Šis zmūi ast labban (błąd: Šis zmūi ast <span style="text-decoration: line-through red;">labs</span>.)
* Jūs astei gaūdran (błąd: Jūs astei <span style="text-decoration: line-through red;">gaudrāi/gaūdras</span>.)
* Āukruwja pastāi gūztan (błąd: Āukruwja pastāi gūztan <span style="text-decoration: line-through red;">guztā</span>.)
* Mes pastāimai papaikītan (błąd: Mes pastāimai <span style="text-decoration: line-through red;">papaikitāi/papaikītas</span>.)
== Przymiotnik + rzeczownik ==
Odmieniając przez przypadki przymiotnik z rzeczownikiem, rzeczownik może stracić swój przypadek i przejść do biernika, np.:
1. Liczba pojedyncza:
* M.: Sta ast <u>naws buweīns</u>. – To jest nowe mieszkanie. (oba słowa są w mianowniku)
* D.: <u>Nawwas buweīnan</u> langstas ast debīkan. – Okna nowego mieszkania są duże. (przymiotnik jest w dopełniaczu, a rzeczownik w bierniku)
* C.: Mes asmai en <u>nawwasmu buweīnan</u>. – Jesteśmy w nowym mieszkaniu. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* B.: Mes jāmai en <u>nawwan buweīnan</u>. – Jedziemy do nowego mieszkania. (oba słowa są w bierniku)
2. Liczba mnoga:
* M.: Sta ast <u>nawwai buweīnai</u>. – To są nowe mieszkania . (oba słowa są w mianowniku)
* D.: <u>Nawwan buweīnan</u> langstas ast debīkan. – Okna nowych mieszkań są duże. (oba słowa są w dopełniaczu).
* C.: Mes asmai en <u>nawwamans buweīnans</u>. – Jesteśmy w nowych mieszkaniach. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* B.: Mes jāmai en <u>nawwans buweīnans</u>. – Jedziemy do nowych mieszkań. (oba słowa są w bierniku)
Jeśli jest więcej niż jeden przymiotnik, to tylko ten pierwszy ma odpowiednie przypadki, a z drugim przymiotnikiem dzieje się to samo co z rzeczownikiem, np. ''Mes asmai en nawwasmu debīkan buweīnan'' – Jesteśmy w nowym, dużym mieszkaniu.
2p7ehfjigsa12yf7xzcgkaky3ejrf9r
542643
542642
2026-05-11T20:54:43Z
Aklbmd164
37133
/* Czasownik łącznikowy + przymiotnik */
542643
wikitext
text/x-wiki
'''<big>Lakciōni 30</big>'''
== Odmiana przymiotników ==
Przymiotniki odmieniają się według schematów od <25> do <31>. Na dzisiejszej lekcji poznasz schematy <25> i <26>, które mają podobną odmianę jak rzeczowniki.
== <25> ==
Tym schematem odmieniają się przymiotniki zakończone spółgłoską + literą ''s'' oraz przymiotniki zakończone na ''-iskas''.
* Przykład odmiany ''debīks'' (duży):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">s</span>
| debīk<span style="color:red">a</span>
| debīk<span style="color:red">an</span>
|-
| Dopełniacz
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
|-
| Celownik
| debīk<span style="color:red">asmu</span>
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">asmu</span>
|-
| Biernik
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">ai</span>
|-
| Dopełniacz
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
| Celownik
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
|-
| Biernik
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
|}
* Przykład odmiany ''na<u>w</u>s'' (nowy):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naw<span style="color:red">s</span>
| na<u>ww</u><span style="color:red">a</span>
| naww<span style="color:red">an</span>
|-
| Dopełniacz
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
|-
| Celownik
| naww<span style="color:red">asmu</span>
| naww<span style="color:red">ai</span>
| naww<span style="color:red">asmu</span>
|-
| Biernik
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naww<span style="color:red">ai</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">ai</span>
|-
| Dopełniacz
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
| Celownik
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
|-
| Biernik
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
|}
== <26> ==
Tym schematem odmieniają się często używane przymiotniki zakończone spółgłoską + literą ''s''.
* Przykład odmiany ''wārgs'' (zły):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| wārg<span style="color:red">s</span>
| warg<span style="color:red">ā</span>
| wārg<span style="color:red">an</span>
|-
| Dopełniacz
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
|-
| Celownik
| warg<span style="color:red">àsmu</span>
| wārg<span style="color:red">ai</span>
| warg<span style="color:red">àsmu</span>
|-
| Biernik
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| warg<span style="color:red">āi</span>
| wārg<span style="color:red">as</span>
| warg<span style="color:red">āi</span>
|-
| Dopełniacz
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
| Celownik
| warg<span style="color:red">ammans</span>
| warg<span style="color:red">āmans</span>
| warg<span style="color:red">ammans</span>
|-
| Biernik
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
|}
* Przykład odmiany ''la<u>b</u>s'' (dobry):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">s</span>
| lab<span style="color:red">ā</span>
| la<u>bb</u></span><span style="color:red">an</span>
|-
| Dopełniacz
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
|-
| Celownik
| lab<span style="color:red">àsmu</span>
| labb<span style="color:red">ai</span>
| lab<span style="color:red">àsmu</span>
|-
| Biernik
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">āi</span>
| labb<span style="color:red">as</span>
| lab<span style="color:red">āi</span>
|-
| Dopełniacz
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
| Celownik
| lab<span style="color:red">ammans</span>
| lab<span style="color:red">āmans</span>
| lab<span style="color:red">ammans</span>
|-
| Biernik
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
|}
== Czasownik łącznikowy + przymiotnik ==
Jeśli przymiotnik nie opisuje bezpośrednio rzeczownika, ale łączy się z czasownikiem łącznikowym (np. ''być'', ''zostać''), to wtedy zawsze jest w formie rodzaju nijakiego l. pojedynczej, np.:
* Šis zmūi ast labban (błąd: Šis zmūi ast <span style="text-decoration: line-through red;">labs</span>.)
* Jūs astei gaūdran (błąd: Jūs astei <span style="text-decoration: line-through red;">gaudrāi/gaūdras</span>.)
* Āukruwja pastāi gūztan (błąd: Āukruwja pastāi gūztan <span style="text-decoration: line-through red;">guztā</span>.)
* Mes pastāimai papaikītan (błąd: Mes pastāimai <span style="text-decoration: line-through red;">papaikitāi/papaikītas</span>.)
== Przymiotnik + rzeczownik ==
Odmieniając przez przypadki przymiotnik z rzeczownikiem, rzeczownik może stracić swój przypadek i przejść do biernika, np.:
1. Liczba pojedyncza:
* M.: Sta ast <u>naws buweīns</u>. – To jest nowe mieszkanie. (oba słowa są w mianowniku)
* D.: <u>Nawwas buweīnan</u> langstas ast debīkan. – Okna nowego mieszkania są duże. (przymiotnik jest w dopełniaczu, a rzeczownik w bierniku)
* C.: Mes asmai en <u>nawwasmu buweīnan</u>. – Jesteśmy w nowym mieszkaniu. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* B.: Mes jāmai en <u>nawwan buweīnan</u>. – Jedziemy do nowego mieszkania. (oba słowa są w bierniku)
2. Liczba mnoga:
* M.: Sta ast <u>nawwai buweīnai</u>. – To są nowe mieszkania . (oba słowa są w mianowniku)
* D.: <u>Nawwan buweīnan</u> langstas ast debīkan. – Okna nowych mieszkań są duże. (oba słowa są w dopełniaczu).
* C.: Mes asmai en <u>nawwamans buweīnans</u>. – Jesteśmy w nowych mieszkaniach. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* B.: Mes jāmai en <u>nawwans buweīnans</u>. – Jedziemy do nowych mieszkań. (oba słowa są w bierniku)
Jeśli jest więcej niż jeden przymiotnik, to tylko ten pierwszy ma odpowiednie przypadki, a z drugim przymiotnikiem dzieje się to samo co z rzeczownikiem, np. ''Mes asmai en nawwasmu debīkan buweīnan'' – Jesteśmy w nowym, dużym mieszkaniu.
mn0cnjnos1gooh08t53wjsylzhzn1hb
542644
542643
2026-05-11T20:55:13Z
Aklbmd164
37133
/* Czasownik łącznikowy + przymiotnik */
542644
wikitext
text/x-wiki
'''<big>Lakciōni 30</big>'''
== Odmiana przymiotników ==
Przymiotniki odmieniają się według schematów od <25> do <31>. Na dzisiejszej lekcji poznasz schematy <25> i <26>, które mają podobną odmianę jak rzeczowniki.
== <25> ==
Tym schematem odmieniają się przymiotniki zakończone spółgłoską + literą ''s'' oraz przymiotniki zakończone na ''-iskas''.
* Przykład odmiany ''debīks'' (duży):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">s</span>
| debīk<span style="color:red">a</span>
| debīk<span style="color:red">an</span>
|-
| Dopełniacz
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
|-
| Celownik
| debīk<span style="color:red">asmu</span>
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">asmu</span>
|-
| Biernik
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">ai</span>
|-
| Dopełniacz
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
| Celownik
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
|-
| Biernik
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
|}
* Przykład odmiany ''na<u>w</u>s'' (nowy):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naw<span style="color:red">s</span>
| na<u>ww</u><span style="color:red">a</span>
| naww<span style="color:red">an</span>
|-
| Dopełniacz
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
|-
| Celownik
| naww<span style="color:red">asmu</span>
| naww<span style="color:red">ai</span>
| naww<span style="color:red">asmu</span>
|-
| Biernik
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naww<span style="color:red">ai</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">ai</span>
|-
| Dopełniacz
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
| Celownik
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
|-
| Biernik
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
|}
== <26> ==
Tym schematem odmieniają się często używane przymiotniki zakończone spółgłoską + literą ''s''.
* Przykład odmiany ''wārgs'' (zły):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| wārg<span style="color:red">s</span>
| warg<span style="color:red">ā</span>
| wārg<span style="color:red">an</span>
|-
| Dopełniacz
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
|-
| Celownik
| warg<span style="color:red">àsmu</span>
| wārg<span style="color:red">ai</span>
| warg<span style="color:red">àsmu</span>
|-
| Biernik
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| warg<span style="color:red">āi</span>
| wārg<span style="color:red">as</span>
| warg<span style="color:red">āi</span>
|-
| Dopełniacz
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
| Celownik
| warg<span style="color:red">ammans</span>
| warg<span style="color:red">āmans</span>
| warg<span style="color:red">ammans</span>
|-
| Biernik
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
|}
* Przykład odmiany ''la<u>b</u>s'' (dobry):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">s</span>
| lab<span style="color:red">ā</span>
| la<u>bb</u></span><span style="color:red">an</span>
|-
| Dopełniacz
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
|-
| Celownik
| lab<span style="color:red">àsmu</span>
| labb<span style="color:red">ai</span>
| lab<span style="color:red">àsmu</span>
|-
| Biernik
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">āi</span>
| labb<span style="color:red">as</span>
| lab<span style="color:red">āi</span>
|-
| Dopełniacz
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
| Celownik
| lab<span style="color:red">ammans</span>
| lab<span style="color:red">āmans</span>
| lab<span style="color:red">ammans</span>
|-
| Biernik
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
|}
== Czasownik łącznikowy + przymiotnik ==
Jeśli przymiotnik nie opisuje bezpośrednio rzeczownika, ale łączy się z czasownikiem łącznikowym (np. ''być'', ''zostać''), to wtedy zawsze jest w formie rodzaju nijakiego l. pojedynczej, np.:
* Šis zmūi ast labban (błąd: Šis zmūi ast <span style="text-decoration: line-through red;">labs</span>.)
* Jūs astei gaūdran (błąd: Jūs astei <span style="text-decoration: line-through red;">gaudrāi/gaūdras</span>.)
* Āukruwja pastāi gūztan (błąd: Āukruwja pastāi <span style="text-decoration: line-through red;">guztā</span>.)
* Mes pastāimai papaikītan (błąd: Mes pastāimai <span style="text-decoration: line-through red;">papaikitāi/papaikītas</span>.)
== Przymiotnik + rzeczownik ==
Odmieniając przez przypadki przymiotnik z rzeczownikiem, rzeczownik może stracić swój przypadek i przejść do biernika, np.:
1. Liczba pojedyncza:
* M.: Sta ast <u>naws buweīns</u>. – To jest nowe mieszkanie. (oba słowa są w mianowniku)
* D.: <u>Nawwas buweīnan</u> langstas ast debīkan. – Okna nowego mieszkania są duże. (przymiotnik jest w dopełniaczu, a rzeczownik w bierniku)
* C.: Mes asmai en <u>nawwasmu buweīnan</u>. – Jesteśmy w nowym mieszkaniu. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* B.: Mes jāmai en <u>nawwan buweīnan</u>. – Jedziemy do nowego mieszkania. (oba słowa są w bierniku)
2. Liczba mnoga:
* M.: Sta ast <u>nawwai buweīnai</u>. – To są nowe mieszkania . (oba słowa są w mianowniku)
* D.: <u>Nawwan buweīnan</u> langstas ast debīkan. – Okna nowych mieszkań są duże. (oba słowa są w dopełniaczu).
* C.: Mes asmai en <u>nawwamans buweīnans</u>. – Jesteśmy w nowych mieszkaniach. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* B.: Mes jāmai en <u>nawwans buweīnans</u>. – Jedziemy do nowych mieszkań. (oba słowa są w bierniku)
Jeśli jest więcej niż jeden przymiotnik, to tylko ten pierwszy ma odpowiednie przypadki, a z drugim przymiotnikiem dzieje się to samo co z rzeczownikiem, np. ''Mes asmai en nawwasmu debīkan buweīnan'' – Jesteśmy w nowym, dużym mieszkaniu.
0evzhi7foi06almzaspu6m78elm310r
542645
542644
2026-05-11T21:12:58Z
Aklbmd164
37133
/* Przymiotnik + rzeczownik */
542645
wikitext
text/x-wiki
'''<big>Lakciōni 30</big>'''
== Odmiana przymiotników ==
Przymiotniki odmieniają się według schematów od <25> do <31>. Na dzisiejszej lekcji poznasz schematy <25> i <26>, które mają podobną odmianę jak rzeczowniki.
== <25> ==
Tym schematem odmieniają się przymiotniki zakończone spółgłoską + literą ''s'' oraz przymiotniki zakończone na ''-iskas''.
* Przykład odmiany ''debīks'' (duży):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">s</span>
| debīk<span style="color:red">a</span>
| debīk<span style="color:red">an</span>
|-
| Dopełniacz
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
|-
| Celownik
| debīk<span style="color:red">asmu</span>
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">asmu</span>
|-
| Biernik
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">ai</span>
|-
| Dopełniacz
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
| Celownik
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
|-
| Biernik
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
|}
* Przykład odmiany ''na<u>w</u>s'' (nowy):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naw<span style="color:red">s</span>
| na<u>ww</u><span style="color:red">a</span>
| naww<span style="color:red">an</span>
|-
| Dopełniacz
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
|-
| Celownik
| naww<span style="color:red">asmu</span>
| naww<span style="color:red">ai</span>
| naww<span style="color:red">asmu</span>
|-
| Biernik
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naww<span style="color:red">ai</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">ai</span>
|-
| Dopełniacz
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
| Celownik
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
|-
| Biernik
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
|}
== <26> ==
Tym schematem odmieniają się często używane przymiotniki zakończone spółgłoską + literą ''s''.
* Przykład odmiany ''wārgs'' (zły):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| wārg<span style="color:red">s</span>
| warg<span style="color:red">ā</span>
| wārg<span style="color:red">an</span>
|-
| Dopełniacz
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
|-
| Celownik
| warg<span style="color:red">àsmu</span>
| wārg<span style="color:red">ai</span>
| warg<span style="color:red">àsmu</span>
|-
| Biernik
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| warg<span style="color:red">āi</span>
| wārg<span style="color:red">as</span>
| warg<span style="color:red">āi</span>
|-
| Dopełniacz
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
| Celownik
| warg<span style="color:red">ammans</span>
| warg<span style="color:red">āmans</span>
| warg<span style="color:red">ammans</span>
|-
| Biernik
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
|}
* Przykład odmiany ''la<u>b</u>s'' (dobry):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">s</span>
| lab<span style="color:red">ā</span>
| la<u>bb</u></span><span style="color:red">an</span>
|-
| Dopełniacz
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
|-
| Celownik
| lab<span style="color:red">àsmu</span>
| labb<span style="color:red">ai</span>
| lab<span style="color:red">àsmu</span>
|-
| Biernik
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">āi</span>
| labb<span style="color:red">as</span>
| lab<span style="color:red">āi</span>
|-
| Dopełniacz
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
| Celownik
| lab<span style="color:red">ammans</span>
| lab<span style="color:red">āmans</span>
| lab<span style="color:red">ammans</span>
|-
| Biernik
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
|}
== Czasownik łącznikowy + przymiotnik ==
Jeśli przymiotnik nie opisuje bezpośrednio rzeczownika, ale łączy się z czasownikiem łącznikowym (np. ''być'', ''zostać''), to wtedy zawsze jest w formie rodzaju nijakiego l. pojedynczej, np.:
* Šis zmūi ast labban (błąd: Šis zmūi ast <span style="text-decoration: line-through red;">labs</span>.)
* Jūs astei gaūdran (błąd: Jūs astei <span style="text-decoration: line-through red;">gaudrāi/gaūdras</span>.)
* Āukruwja pastāi gūztan (błąd: Āukruwja pastāi <span style="text-decoration: line-through red;">guztā</span>.)
* Mes pastāimai papaikītan (błąd: Mes pastāimai <span style="text-decoration: line-through red;">papaikitāi/papaikītas</span>.)
== Połączenia przymiotnika z rzeczownikiem w celowniku ==
W połączeniach przymiotnika z rzeczownikiem w celowniku, rzeczownik traci formę celownika i przyjmuje formę biernika, np.:
* Mes asmai en <u>nawwasmu buweīnan</u>. – Jesteśmy w nowym mieszkaniu. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* Mes pagalbamai <u>nawwamans kōlagins</u>. – Pomogliśmy nowym kolegom. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
Jeśli w zdaniu jest więcej niż jeden przymiotnik, który opisuje rzeczownik, to tylko ten pierwszy ma formę celownika, a drugi przymiotnik tak jak rzeczownik przyjmuje formę biernika, np. ''As asma en nawwasmu debīkan buweīnan'' (Jestem w nowym, dużym mieszkaniu).
9p9gzgh30ozn1e367shjqy8giyfkmn5
542646
542645
2026-05-11T21:13:41Z
Aklbmd164
37133
/* Czasownik łącznikowy + przymiotnik */
542646
wikitext
text/x-wiki
'''<big>Lakciōni 30</big>'''
== Odmiana przymiotników ==
Przymiotniki odmieniają się według schematów od <25> do <31>. Na dzisiejszej lekcji poznasz schematy <25> i <26>, które mają podobną odmianę jak rzeczowniki.
== <25> ==
Tym schematem odmieniają się przymiotniki zakończone spółgłoską + literą ''s'' oraz przymiotniki zakończone na ''-iskas''.
* Przykład odmiany ''debīks'' (duży):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">s</span>
| debīk<span style="color:red">a</span>
| debīk<span style="color:red">an</span>
|-
| Dopełniacz
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
|-
| Celownik
| debīk<span style="color:red">asmu</span>
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">asmu</span>
|-
| Biernik
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">ai</span>
|-
| Dopełniacz
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
| Celownik
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
|-
| Biernik
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
|}
* Przykład odmiany ''na<u>w</u>s'' (nowy):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naw<span style="color:red">s</span>
| na<u>ww</u><span style="color:red">a</span>
| naww<span style="color:red">an</span>
|-
| Dopełniacz
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
|-
| Celownik
| naww<span style="color:red">asmu</span>
| naww<span style="color:red">ai</span>
| naww<span style="color:red">asmu</span>
|-
| Biernik
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naww<span style="color:red">ai</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">ai</span>
|-
| Dopełniacz
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
| Celownik
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
|-
| Biernik
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
|}
== <26> ==
Tym schematem odmieniają się często używane przymiotniki zakończone spółgłoską + literą ''s''.
* Przykład odmiany ''wārgs'' (zły):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| wārg<span style="color:red">s</span>
| warg<span style="color:red">ā</span>
| wārg<span style="color:red">an</span>
|-
| Dopełniacz
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
|-
| Celownik
| warg<span style="color:red">àsmu</span>
| wārg<span style="color:red">ai</span>
| warg<span style="color:red">àsmu</span>
|-
| Biernik
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| warg<span style="color:red">āi</span>
| wārg<span style="color:red">as</span>
| warg<span style="color:red">āi</span>
|-
| Dopełniacz
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
| Celownik
| warg<span style="color:red">ammans</span>
| warg<span style="color:red">āmans</span>
| warg<span style="color:red">ammans</span>
|-
| Biernik
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
|}
* Przykład odmiany ''la<u>b</u>s'' (dobry):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">s</span>
| lab<span style="color:red">ā</span>
| la<u>bb</u></span><span style="color:red">an</span>
|-
| Dopełniacz
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
|-
| Celownik
| lab<span style="color:red">àsmu</span>
| labb<span style="color:red">ai</span>
| lab<span style="color:red">àsmu</span>
|-
| Biernik
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">āi</span>
| labb<span style="color:red">as</span>
| lab<span style="color:red">āi</span>
|-
| Dopełniacz
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
| Celownik
| lab<span style="color:red">ammans</span>
| lab<span style="color:red">āmans</span>
| lab<span style="color:red">ammans</span>
|-
| Biernik
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
|}
== Połączenie czasownik łącznikowego z przymiotnikiem ==
Jeśli przymiotnik nie opisuje bezpośrednio rzeczownika, ale łączy się z czasownikiem łącznikowym (np. ''być'', ''zostać''), to wtedy zawsze jest w formie rodzaju nijakiego l. pojedynczej, np.:
* Šis zmūi ast labban (błąd: Šis zmūi ast <span style="text-decoration: line-through red;">labs</span>.)
* Jūs astei gaūdran (błąd: Jūs astei <span style="text-decoration: line-through red;">gaudrāi/gaūdras</span>.)
* Āukruwja pastāi gūztan (błąd: Āukruwja pastāi <span style="text-decoration: line-through red;">guztā</span>.)
* Mes pastāimai papaikītan (błąd: Mes pastāimai <span style="text-decoration: line-through red;">papaikitāi/papaikītas</span>.)
== Połączenia przymiotnika z rzeczownikiem w celowniku ==
W połączeniach przymiotnika z rzeczownikiem w celowniku, rzeczownik traci formę celownika i przyjmuje formę biernika, np.:
* Mes asmai en <u>nawwasmu buweīnan</u>. – Jesteśmy w nowym mieszkaniu. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* Mes pagalbamai <u>nawwamans kōlagins</u>. – Pomogliśmy nowym kolegom. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
Jeśli w zdaniu jest więcej niż jeden przymiotnik, który opisuje rzeczownik, to tylko ten pierwszy ma formę celownika, a drugi przymiotnik tak jak rzeczownik przyjmuje formę biernika, np. ''As asma en nawwasmu debīkan buweīnan'' (Jestem w nowym, dużym mieszkaniu).
jxqioqpzt89q1dpeiezjgvqkjurnfxf
542647
542646
2026-05-11T21:15:32Z
Aklbmd164
37133
/* Połączenia przymiotnika z rzeczownikiem w celowniku */
542647
wikitext
text/x-wiki
'''<big>Lakciōni 30</big>'''
== Odmiana przymiotników ==
Przymiotniki odmieniają się według schematów od <25> do <31>. Na dzisiejszej lekcji poznasz schematy <25> i <26>, które mają podobną odmianę jak rzeczowniki.
== <25> ==
Tym schematem odmieniają się przymiotniki zakończone spółgłoską + literą ''s'' oraz przymiotniki zakończone na ''-iskas''.
* Przykład odmiany ''debīks'' (duży):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">s</span>
| debīk<span style="color:red">a</span>
| debīk<span style="color:red">an</span>
|-
| Dopełniacz
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
|-
| Celownik
| debīk<span style="color:red">asmu</span>
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">asmu</span>
|-
| Biernik
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">ai</span>
|-
| Dopełniacz
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
| Celownik
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
|-
| Biernik
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
|}
* Przykład odmiany ''na<u>w</u>s'' (nowy):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naw<span style="color:red">s</span>
| na<u>ww</u><span style="color:red">a</span>
| naww<span style="color:red">an</span>
|-
| Dopełniacz
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
|-
| Celownik
| naww<span style="color:red">asmu</span>
| naww<span style="color:red">ai</span>
| naww<span style="color:red">asmu</span>
|-
| Biernik
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naww<span style="color:red">ai</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">ai</span>
|-
| Dopełniacz
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
| Celownik
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
|-
| Biernik
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
|}
== <26> ==
Tym schematem odmieniają się często używane przymiotniki zakończone spółgłoską + literą ''s''.
* Przykład odmiany ''wārgs'' (zły):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| wārg<span style="color:red">s</span>
| warg<span style="color:red">ā</span>
| wārg<span style="color:red">an</span>
|-
| Dopełniacz
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
|-
| Celownik
| warg<span style="color:red">àsmu</span>
| wārg<span style="color:red">ai</span>
| warg<span style="color:red">àsmu</span>
|-
| Biernik
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| warg<span style="color:red">āi</span>
| wārg<span style="color:red">as</span>
| warg<span style="color:red">āi</span>
|-
| Dopełniacz
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
| Celownik
| warg<span style="color:red">ammans</span>
| warg<span style="color:red">āmans</span>
| warg<span style="color:red">ammans</span>
|-
| Biernik
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
|}
* Przykład odmiany ''la<u>b</u>s'' (dobry):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">s</span>
| lab<span style="color:red">ā</span>
| la<u>bb</u></span><span style="color:red">an</span>
|-
| Dopełniacz
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
|-
| Celownik
| lab<span style="color:red">àsmu</span>
| labb<span style="color:red">ai</span>
| lab<span style="color:red">àsmu</span>
|-
| Biernik
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">āi</span>
| labb<span style="color:red">as</span>
| lab<span style="color:red">āi</span>
|-
| Dopełniacz
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
| Celownik
| lab<span style="color:red">ammans</span>
| lab<span style="color:red">āmans</span>
| lab<span style="color:red">ammans</span>
|-
| Biernik
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
|}
== Połączenie czasownik łącznikowego z przymiotnikiem ==
Jeśli przymiotnik nie opisuje bezpośrednio rzeczownika, ale łączy się z czasownikiem łącznikowym (np. ''być'', ''zostać''), to wtedy zawsze jest w formie rodzaju nijakiego l. pojedynczej, np.:
* Šis zmūi ast labban (błąd: Šis zmūi ast <span style="text-decoration: line-through red;">labs</span>.)
* Jūs astei gaūdran (błąd: Jūs astei <span style="text-decoration: line-through red;">gaudrāi/gaūdras</span>.)
* Āukruwja pastāi gūztan (błąd: Āukruwja pastāi <span style="text-decoration: line-through red;">guztā</span>.)
* Mes pastāimai papaikītan (błąd: Mes pastāimai <span style="text-decoration: line-through red;">papaikitāi/papaikītas</span>.)
== Połączenia przymiotnika z rzeczownikiem w celowniku ==
W połączeniach przymiotnika z rzeczownikiem w celowniku, rzeczownik traci formę celownika i przyjmuje formę biernika, np.:
* Mes asmai en <u>nawwasmu buweīnan</u>. – Jesteśmy w nowym mieszkaniu. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* Mes pagalbamai <u>nawwamans kōlagins</u>. – Pomogliśmy nowym kolegom. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
Jeśli w zdaniu jest więcej niż jeden przymiotnik, który opisuje rzeczownik, to tylko ten pierwszy ma formę celownika, a drugi przymiotnik tak jak rzeczownik przyjmuje formę biernika, np. ''As asma en nawwasmu, debīkan buweīnan'' (Jestem w nowym, dużym mieszkaniu).
k36kyk92byaxkz3xb3zp0zdfcnkrmiy
542648
542647
2026-05-11T21:16:08Z
Aklbmd164
37133
/* Połączenia przymiotnika z rzeczownikiem w celowniku */
542648
wikitext
text/x-wiki
'''<big>Lakciōni 30</big>'''
== Odmiana przymiotników ==
Przymiotniki odmieniają się według schematów od <25> do <31>. Na dzisiejszej lekcji poznasz schematy <25> i <26>, które mają podobną odmianę jak rzeczowniki.
== <25> ==
Tym schematem odmieniają się przymiotniki zakończone spółgłoską + literą ''s'' oraz przymiotniki zakończone na ''-iskas''.
* Przykład odmiany ''debīks'' (duży):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">s</span>
| debīk<span style="color:red">a</span>
| debīk<span style="color:red">an</span>
|-
| Dopełniacz
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
|-
| Celownik
| debīk<span style="color:red">asmu</span>
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">asmu</span>
|-
| Biernik
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">ai</span>
|-
| Dopełniacz
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
| Celownik
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
|-
| Biernik
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
|}
* Przykład odmiany ''na<u>w</u>s'' (nowy):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naw<span style="color:red">s</span>
| na<u>ww</u><span style="color:red">a</span>
| naww<span style="color:red">an</span>
|-
| Dopełniacz
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
|-
| Celownik
| naww<span style="color:red">asmu</span>
| naww<span style="color:red">ai</span>
| naww<span style="color:red">asmu</span>
|-
| Biernik
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naww<span style="color:red">ai</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">ai</span>
|-
| Dopełniacz
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
| Celownik
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
|-
| Biernik
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
|}
== <26> ==
Tym schematem odmieniają się często używane przymiotniki zakończone spółgłoską + literą ''s''.
* Przykład odmiany ''wārgs'' (zły):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| wārg<span style="color:red">s</span>
| warg<span style="color:red">ā</span>
| wārg<span style="color:red">an</span>
|-
| Dopełniacz
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
|-
| Celownik
| warg<span style="color:red">àsmu</span>
| wārg<span style="color:red">ai</span>
| warg<span style="color:red">àsmu</span>
|-
| Biernik
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| warg<span style="color:red">āi</span>
| wārg<span style="color:red">as</span>
| warg<span style="color:red">āi</span>
|-
| Dopełniacz
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
| Celownik
| warg<span style="color:red">ammans</span>
| warg<span style="color:red">āmans</span>
| warg<span style="color:red">ammans</span>
|-
| Biernik
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
|}
* Przykład odmiany ''la<u>b</u>s'' (dobry):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">s</span>
| lab<span style="color:red">ā</span>
| la<u>bb</u></span><span style="color:red">an</span>
|-
| Dopełniacz
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
|-
| Celownik
| lab<span style="color:red">àsmu</span>
| labb<span style="color:red">ai</span>
| lab<span style="color:red">àsmu</span>
|-
| Biernik
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">āi</span>
| labb<span style="color:red">as</span>
| lab<span style="color:red">āi</span>
|-
| Dopełniacz
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
| Celownik
| lab<span style="color:red">ammans</span>
| lab<span style="color:red">āmans</span>
| lab<span style="color:red">ammans</span>
|-
| Biernik
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
|}
== Połączenie czasownik łącznikowego z przymiotnikiem ==
Jeśli przymiotnik nie opisuje bezpośrednio rzeczownika, ale łączy się z czasownikiem łącznikowym (np. ''być'', ''zostać''), to wtedy zawsze jest w formie rodzaju nijakiego l. pojedynczej, np.:
* Šis zmūi ast labban (błąd: Šis zmūi ast <span style="text-decoration: line-through red;">labs</span>.)
* Jūs astei gaūdran (błąd: Jūs astei <span style="text-decoration: line-through red;">gaudrāi/gaūdras</span>.)
* Āukruwja pastāi gūztan (błąd: Āukruwja pastāi <span style="text-decoration: line-through red;">guztā</span>.)
* Mes pastāimai papaikītan (błąd: Mes pastāimai <span style="text-decoration: line-through red;">papaikitāi/papaikītas</span>.)
== Połączenie przymiotnika z rzeczownikiem w celowniku ==
W połączeniach przymiotnika z rzeczownikiem w celowniku, rzeczownik traci formę celownika i przyjmuje formę biernika, np.:
* Mes asmai en <u>nawwasmu buweīnan</u>. – Jesteśmy w nowym mieszkaniu. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* Mes pagalbamai <u>nawwamans kōlagins</u>. – Pomogliśmy nowym kolegom. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
Jeśli w zdaniu jest więcej niż jeden przymiotnik, który opisuje rzeczownik, to tylko ten pierwszy ma formę celownika, a drugi przymiotnik tak jak rzeczownik przyjmuje formę biernika, np. ''As asma en nawwasmu, debīkan buweīnan'' (Jestem w nowym, dużym mieszkaniu).
tvi8xwbcchlvg90wap9ib7z3kuh7z3w
Wikibooks:Moduły/Nazwy/Np
4
62921
542640
542627
2026-05-11T19:41:21Z
Persino
2851
/* Wywołanie modułu */
542640
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywoływany raz na całą stronę. Moduł mieści się na stronie: {{ld2|Nazwy/Np}}.
== Wywołanie modułu ==
Moduł wywołujemy, gdy napiszemy:
<syntaxhighlight lang="lua">
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
</syntaxhighlight>
Tego modułu nie powinno się wywoływać, jako:
<syntaxhighlight lang="lua">
local nazwy_np_modul=require("Module:Nazwy/Np");
</syntaxhighlight>
ponieważ to powoduje kilkakrotne liczenie tych samych zmiennych w typ module, np. te same wywołanie funkcji: {{Code|{{sr|#m.Np|p=Nazwy/Tom I}}}}, tzn.:
<syntaxhighlight lang="lua">
local p={};
local kanoniczna={Main="",...};
p.kanoniczna=kanoniczna;
...
local nazwy_modul=require("Module:Nazwy");
p.Main=nazwy_modul.Np{nazwa=kanoniczna.Main,};
p.MainDisplayName=nazwy_modul.Np{nazwa=kanoniczna.Main,["wyświetlana"]="tak",};
...
return p;
</syntaxhighlight>
== Nazwy kanoniczne ==
Dostępne nazwy kanoniczne przestrzeni nazw, mają ogólny adres:
<syntaxhighlight lang="lua">
local kanoniczna=nazwy_np_modul.kanoniczna;
local <nazwa przestrzeni nazw kanoniczna> = kanoniczna.<nazwa właściwości symbolizującą przestrzeń nazw>;
</syntaxhighlight>
=== Przykład uzyskiwania nazwy kanonicznej ===
<syntaxhighlight lang="lua">
local MainDisplayName = kanoniczna.MainDisplayName; -- Wartością tej zmiennej jest: "(main)".
</syntaxhighlight>
=== Właściwości i ich wartości, zmiennej „kanoniczna” modułu nazw szczególnych ===
Dostępne na polskim {{NAZWASERWISU|wikipedia=tak|link=tak}} przestrzenie nazw kanoniczne podane w tabelce:
{{Tabela|klasa=wikitable tekst-centruj-td|liczba wierszy=16|liczba kolumn=4
| komórka 1_1 = Przestrzeń przedmiotowa | nagłówek 1_1 = tak | kolumny 1_1 = 2 | komórka 1_3 = Przestrzeń dyskusji | nagłówek 1_3 = tak | kolumny 1_3 = 2
| komórka 2_1 = Właściwość | nagłówek 2_1 = tak | komórka 2_2 = Wartość | nagłówek 2_2 = tak | komórka 2_3 = Właściwość | nagłówek 2_3 = tak | komórka 2_4 = Wartość | nagłówek 2_4 = tak
| komórka 3_1 = Main | komórka 3_2 = - | komórka 3_3 = Talk | wiersze 3_3 = 2 | komórka 3_4 = Talk | wiersze 3_4 = 2
| komórka 4_1 = MainDisplayName | komórka 4_2 = (main)
| komórka 5_1 = Wikijunior | komórka 5_2 = Wikijunior | komórka 5_3 = Wikijunior_talk | komórka 5_4 = Wikijunior talk
| komórka 6_1 = User | komórka 6_2 = User | komórka 6_3 = User_talk | komórka 6_4 = User talk
| komórka 7_1 = File | komórka 7_2 = File | komórka 7_3 = File_talk | komórka 7_4 = File talk
| komórka 8_1 = Media | komórka 8_2 = Media | komórka 8_3 = - | kolumny 8_3 = 2
| komórka 9_1 = Category | komórka 9_2 = Category | komórka 9_3 = Category_talk | komórka 9_4 = Category talk
| komórka 10_1 = Template | komórka 10_2 = Template | komórka 10_3 = Template_talk | komórka 10_4 = Template talk
| komórka 11_1 = Module | komórka 11_2 = Module | komórka 11_3 = Module_talk | komórka 11_4 = Module talk
| komórka 12_1 = Project | komórka 12_2 = Project | komórka 12_3 = Project_talk | komórka 12_4 = Project talk
| komórka 13_1 = Wikibooks | komórka 13_2 = Wikibooks | komórka 13_3 = Wikibooks_talk | komórka 13_4 = Wikibooks talk
| komórka 14_1 = Help | komórka 14_2 = Help | komórka 14_3 = Help_talk | komórka 14_4 = Help talk
| komórka 15_1 = MediaWiki | komórka 15_2 = MediaWiki | komórka 15_3 = MediaWiki_talk | komórka 15_4 = MediaWiki talk
| komórka 16_1 = Special | komórka 16_2 = Special | komórka 16_3 = - | kolumny 16_3 = 2
}}
Przede wszystkim właściwość i wartość właściwości zmiennej są takie same, uwzględniając, że w właściwości spacje są zastąpione dolnymi myślnikami, z wyjątkiem tym, że zmienna {{Code|MainDisplayName}} nie jest nazwą kanoniczną, a także jego wartość, prawdziwą wartością kanoniczną jest wartość pusta, co jest uwidocznione w następnym wyjątku w zmiennej {{Code|Main}}, którego wartością jest wartość pusta.
Zmienne: {{Code|Main}} i {{Code|MainDisplayName}}, wskazują na tą samą przestrzeń, którą jest wartość pusta, ona wskazuje na przestrzeń główną, którą możemy oznaczyć, jako po angielsku: {{Code|(main)}}, lub po polsku: {{Code|(główna)}}.
Zmienne: {{Code|Media}} i {{Code|Special}}, nie mają swojego odpowiednika dla przestrzeni dyskusji.
== Nazwy niekanoniczne przestrzeni nazw ==
Dostępne nazwy niekanoniczne przestrzeni nazw, mają ogólny adres:
<syntaxhighlight lang="lua">
local <nazwa przestrzeni nazw kanoniczna> = nazwy_np_modul.<nazwa właściwości symbolizującą przestrzeń nazw>;
</syntaxhighlight>
=== Przykład uzyskiwania nazwy niekanonicznej ===
<syntaxhighlight lang="lua">
local MainDisplayName = nazwy_np_modul.MainDisplayName; -- Wartością tej zmiennej jest: "(główna)".
</syntaxhighlight>
=== Właściwości i ich wartości, zmiennych głównych tego modułu nazw szczególnych ===
Dostępne na polskim {{NAZWASERWISU|wikipedia=tak|link=tak}} przestrzenie nazw niekanoniczne podane w tabelce:
{{Tabela|klasa=wikitable tekst-centruj-td|liczba wierszy=15|liczba kolumn=6
| komórka 1_1 = Przestrzeń przedmiotowa | nagłówek 1_1 = tak | kolumny 1_1 = 3 | komórka 1_4 = Przestrzeń dyskusji | nagłówek 1_4 = tak | kolumny 1_4 = 3
| komórka 2_1 = Właściwość | nagłówek 2_1 = tak | komórka 2_2 = Nazwa kanoniczna | nagłówek 2_2 = tak | komórka 2_3 = Wartość | nagłówek 2_3 = tak | komórka 2_4 = Właściwość | nagłówek 2_4 = tak | komórka 2_5 = Nazwa kanoniczna | nagłówek 2_5 = tak | komórka 2_6 = Wartość | nagłówek 2_6 = tak
| komórka 3_1 = Main | komórka 3_2 = - | komórka 3_3 = -| komórka 3_4 = Talk | wiersze 3_4 = 2 | komórka 3_5 = Talk | wiersze 3_5 = 2 | komórka 3_6 = Dyskusja | wiersze 3_6 = 2
| komórka 4_1 = MainDisplayName | komórka 4_2 = (main) | komórka 4_3 = (główna)
| komórka 5_1 = Wikijunior | komórka 5_2 = Wikijunior | komórka 5_3 = Wikijunior | komórka 5_4 = Wikijunior_talk | komórka 5_5 = Wikijunior talk | komórka 5_6 = Dyskusja Wikijuniora
| komórka 6_1 = User | komórka 6_2 = User | komórka 6_3 = Wikipedysta | komórka 6_4 = User_talk | komórka 6_5 = User talk | komórka 6_6 = Dyskusja wikipedysty
| komórka 7_1 = File | komórka 7_2 = File | komórka 7_3 = Plik | komórka 7_4 = File_talk | komórka 7_5 = File talk | komórka 7_6 = Dyskusja pliku
| komórka 8_1 = Media | komórka 8_2 = Media | komórka 8_3 = Media | komórka 8_4 = - | kolumny 8_4 = 3
| komórka 9_1 = Category | komórka 9_2 = Category | komórka 9_3 = Kategoria | komórka 9_4 = Category_talk | komórka 9_5 = Category talk | komórka 9_6 = Dyskusja kategorii
| komórka 10_1 = Template | komórka 10_2 = Template | komórka 10_3 = Szablon | komórka 10_4 = Template_talk | komórka 10_5 = Template talk | komórka 10_6 = Dyskusja szablonu
| komórka 11_1 = Module | komórka 11_2 = Module | komórka 11_3 = Moduł | komórka 11_4 = Module_talk | komórka 11_5 = Module talk | komórka 11_6 = Dyskusja modułu
| komórka 12_1 = Wikibooks | komórka 12_2 = Wikibooks | komórka 12_3 = Wikibooks | komórka 12_4 = Wikibooks_talk | komórka 12_5 = Wikibooks talk | komórka 12_6 = Dyskusja Wikibooks
| komórka 13_1 = Help | komórka 13_2 = Help | komórka 13_3 = Pomoc | komórka 13_4 = Help_talk | komórka 13_5 = Help talk | komórka 13_6 = Dyskusja pomocy
| komórka 14_1 = MediaWiki | komórka 14_2 = MediaWiki | komórka 14_3 = MediaWiki | komórka 14_4 = MediaWiki_talk | komórka 14_5 = MediaWiki talk | komórka 14_6 = Dyskusja MediaWiki
| komórka 15_1 = Special | komórka 15_2 = Special | komórka 15_3 = Specjalna | komórka 15_4 = - | kolumny 15_4 = 3
}}
Właściwości: {{Code|Main}} i {{Code|MainDisplayName}}, wskazują na tą samą przestrzeń o wartości pustej, której jest przestrzenią główną, o angielskiej nazwie kanonicznej: {{Code|(main)}}, a polskiej {{Code|(główna)}}.
Nazwy zmiennych przedmiotowych są przede wszystkim takie same jak kanoniczne z dwoma wyjątkami, a dla przestrzeni dyskusji nazwa właściwości jest z dolnym myślnikiem, a kanoniczna z bez niego, z tylko ze spacją, z wyjątkiem dla zmiennej przestrzeni dyskusji {{Code|Talk}}, która jest bez dolnego myślnika. Wartość tych parametrów równa się o właściwościach o nazwie kanonicznej, ewentualnie z dolny myślnikiem, o wartości nazwie niekanonicznej, które są nazwami przestrzeni po polsku.
Zmienne: {{Code|Media}} i {{Code|Special}}, nie mają swojego odpowiednika dla przestrzeni dyskusji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rtt5t2uq92ccyi8yspkzud392kbivye
Wikibooks:Moduły/Nazwy/Tom II
4
63006
542638
542626
2026-05-11T19:30:40Z
Persino
2851
542638
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Tabela nazw i inne parametry, różnych funkcji nazw ==
Użycie tabeli {{Code|tabela nazw}} służąca do szybszego liczenia poszczególnych funkcji nazw w module {{m|Nazwy}}:
<syntaxhighlight lang="lua">
local nazwy_modul = require("Module:Nazwy");
-- Pełna nazwa strony:
local pelna_nazwa_strony = "Project talk:Moduły/Nazwy";
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz, a nie wiele razy bez niej.
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikibooks":
local nazwa_przestrzeni = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony,tabela_nazw);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony,tabela_nazw);
</syntaxhighlight>
Dodatkowo możemy użyć też innych parametrów, jak:
* Kody różnych projektów, językowych lub nie, różnego typu
** {{Code|klucz projektu}} - używany zamiast {{Code|kod języka}} i {{Code|kod projektu}}, są to kod języka i projektu, oddzielone od siebie dwukropkami,
** {{Code|kod języka}} - jest to pojedynczy kod języka, używany zamiast {{Code|klucz projektu}},
** {{Code|kod projektu}} - jest to pojedynczy kod projektu, używany zamiast {{Code|klucz projektu}},
* Inne parametry
** {{Code|bez zmiany adresu}} - wartość niepusta, wtedy do liczenia nazwy przestrzeni i nazwy strony nie jest usuwana część nagłówkowa i zapytań.
; Oto przykłady{{Dk}}
<syntaxhighlight lang="lua">
local nazwy_modul = require("Module:Nazwy");
-- Pełna nazwa strony:
local pelna_nazwa_strony = "Project talk:Moduły/Nazwy";
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw_1 = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz,a nie wiele razy bez niej.
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_1 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1);
-- Liczenie nazwy przestrzeni nazw:
local tabela_nazw_2 = {};
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_2 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2);
</syntaxhighlight>
Te funkcje wykorzystują dla projektu polskiego {{NAZWASERWISU|link=tak|po=a}} funkcję {{Code|{{sr|#m.Np|Nazwy/Tom I}}}}, a dla innych {{Code|{{sr|#m.NpDane|p=Nazwy/Tom I}}}}.
Wykorzystujemy tutaj parametr {{Code|bez zmiany adresu}}:
<syntaxhighlight lang="lua">
local nazwy_modul = require("Module:Nazwy");
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz,a nie wiele razy bez niej.
-- Pełna nazwa strony:
local pelna_nazwa_strony_z_zapytaniem_i_naglowkiem = "Project talk:Moduły/Nazwy?parametr_1=wartosc_1¶metr_2=wartosc_2#naglowek_strony";
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony_z_zapytaniem_i_naglowkiem,["klucz projektu"] ="pl:w", ["bez zmiany adresu"] = "tak", },tabela_nazw);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy?parametr_1=wartosc_1¶metr_2=wartosc_2#naglowek_strony":
local nazwa_strony_z_zapytaniem_i_naglowkiem = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony_z_zapytaniem_i_naglowkiem,["klucz projektu"] ="pl:w", ["bez zmiany adresu"] = "tak", },tabela_nazw);
</syntaxhighlight>
Funkcje nazw wykorzystują też trzeci parametr, który określa, czy ma liczyć jeszcze raz, czy kody przedstawiają przestrzeń bieżącą, tzn. parametr {{code|czy_wiki}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- czy_wiki
local czy_wiki = true;
-- Pełna nazwa strony:
local pelna_nazwa_strony = "Project talk:Moduły/Nazwy";
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw_1 = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz,a nie wiele razy bez niej.
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_1 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1, czy_wiki);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1, czy_wiki);
-- Liczenie nazwy przestrzeni nazw:
local tabela_nazw_2 = {};
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_2 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2, czy_wiki);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2, czy_wiki);
</syntaxhighlight>
== Różne funkcje nazw obliczające różne rodzaje nazw przestrzeni nazw (przed nazwami stron w pełnych nazwach) ==
=== {{Code|m.NAZWAPRZESTRZENI}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|NAZWAPRZESTRZENI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa przestrzeni służy do liczenia przestrzeni nazw strony z pełnych nazw stron. Gdy przestrzenią nazw jest, dla stron w przestrzeni głównej, przestrzeń '''główna''', wtedy nie ma ciągu reprezentującego w postaci niepustego ciągu, wtedy mamy dla pełnych nazw stron dla przestrzeni przeciwnej, ale nie musi być to przestrzeń dyskusji, wtedy ciąg opisujący ten jest ciągiem niepustym dla przestrzeni niegłównej. Przestrzeń nazw dla stron przedmiotowa jest zmieniana na przedmiotową, a dyskusji na dyskusji, tzn. one na przemian nie są zamieniane, tylko tego samego typu na te tym, ogólnie dla tej funkcji, a nie na przestrzeń typu przeciwnego.
Przestrzenie nazw możemy pisać o dowolnej wielkości liter, ona może być również nazwą kanoniczną. Przestrzenie te są opisane w tabelach na stronie: {{lr2|Moduły/Nazwy}}. Gdy z tej funkcji otrzymamy przestrzeń kanoniczną, bo akurat w pełnej nazwie strony ona jest, to jest zamieniana na niekanoniczną nazwę przestrzeni nazw, charakterysttyczną dla danego projektu, jeżeli istnieją odpowiednie parametry w bazie parametrów w tablicach trannsportu w modułach.
Dla funkcji bez kodów (tzn. bez: {{Code|klucz projektu}} albo używane razem lub osobno: {{Code|kod projektu}} i {{Code|kod języka}}) opisujących dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_1 = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_2 = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_3 = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_1 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Talk":
local nazwa_przestrzeni_nazw_2 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template":
local nazwa_przestrzeni_nazw_3 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template talk":
local nazwa_przestrzeni_nazw_4 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|NAZWAPRZESTRZENI}} dla projektu bieżącego polskiego Wikibooks, widzimy, że po prawwej stronie zawsze otrzymujemy przestrzeń tego powterzeniem po lewej, tylko że zawsze w wersji niekanoniczej:
* {{Code|{{s|NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Dyskusja:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Dyskusja:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Szablon:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Szablon:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, nie tylko dla polskiego Wikibooks (dla jego mamy: {{Code|klucz projektu{{=}}pl:b}}), ale tutaj reprezentujemy angielska wikipedię, gdy nazwy niekanoniczne są jednoczeście nazwami kanonicznymi:
* {{Code|{{s|NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} →{{Tt|{{NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWAPRZESTRZENI|Talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m["PRZEDMIOTOWAPRZESTRZEŃ"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PRZEDMIOTOWAPRZESTRZEŃ}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Przedmiotowa nazwa przestrzeni nazw służy do liczenia przestrzeni nazw strony z pełnych nazw stron. Gdy przestrzenią nazw jest dla stron w przestrzeni głównej lub dyskusji '''Dyskusja''' po zamianie na ten rodzaj przestrzeni, wtedy nie ma ciągu reprezentujące w postaci niepustego ciągu, wtedy mamy dla pełnych nazw stron dla przestrzeni przeciwnej (nie może być ta przestrzeń nazw dyskusji), ale nie musi być to przestrzeń dyskusji, wtedy ciąg opisujący ten jest ciągiem niepustym dla przestrzeni niegłównej. Tutaj, jeżeli pełna nazwa strony jest w przestrzeni dyskusji, to ona jest zamieniona na nazwę w przestrzeni przedmiotowej, a gdy ona jest w przestrzeni przedmiotowej, to nic nie trzeba zamieniać, wtedy otrzymujemy tą samą przestrzeń. To ona jest podana pośrednio, czy bezpośrednio, podana w tej nazwie, tylko zamieniona na nazwę niekanoniczną charakteryzująca dany projekt, gdy wszystkie parametry w bazie parametrów są podane.
Przestrzenie nazw możemy pisać o dowolnej wielkości liter, ona może być również nazwą kanoniczną. Przestrzenie te są opisane w tabelach na stronie: {{lr2|Moduły/Nazwy}}. Gdy z tej funkcji otrzymamy przestrzeń kanoniczną, bo akurat w pełnej nazwie strony ona jest, to jest zamieniana na niekanoniczną nazwę przestrzeni nazw przedmiotową, charakterysttyczną dla danego projektu, jeżeli istnieją odpowiednie parametry w bazie parametrów w tablicach trannsportu w modułach.
Dla funkcji bez kodów (tzn. bez: {{Code|klucz projektu}} albo używane razem lub osobno: {{Code|kod projektu}} i {{Code|kod języka}}) opisujących dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej dyskusji:
local pelna_nazwa_strony_1 = "Dyskusja:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_2 = "Dyskusja_szablonu:Szablon:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_przedmiotowa_1 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_przedmiotowa_2 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_przedmiotowa_3 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"](pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z tymi kodami, używając {{Code|klucz projektu}} albo {{Code|kod projektu}} i {{Code|kod jezyka}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_przedmiotowa_1 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_przedmiotowa_2 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template":
local nazwa_przestrzeni_nazw_przedmiotowa_3 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template":
local nazwa_przestrzeni_nazw_przedmiotowa_4 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZEDMIOTOWAPRZESTRZEŃ}} dla projektu bieżącego polskiego Wikibooks, otrzymujemy przestrzeń nazw pio prawej stronie będącą tego po lewej w wersji przedmiotowej:
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, nie tylko dla polskiego Wikibooks (dla jego mamy: {{Code|klucz projektu{{=}}pl:b}}), ale tutaj reprezentujemy angielska wikipedię, gdy nazwy niekanoniczne są jednoczeście nazwami kanonicznymi:
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m["PRZESTRZEŃDYSKUSJI"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PRZESTRZEŃDYSKUSJI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa przestrzeni nazw dyskusji służy do liczenia przestrzeni nazw strony z pełnych nazw stron. Gdy przestrzenią nazw jest dla stron w przestrzeni głównej, wtedy nie ma ciągu reprezentujące w postaci niepustego ciągu, ale przestrzeń dyskusji nie jest nigdy w tej przestrzeni, wtedy mamy dla pełnych nazw stron dla przestrzeni przeciwnej, ale nie musi być to przestrzeń dyskusji, wtedy ciąg opisujący ten jest ciągiem niepustym dla przestrzeni niegłównej. Tutaj, jeżeli pełna nazwa strony jest w przestrzeni przedmiotowej, to ona jest zamieniona na nazwę w przestrzeni dyskusji, a gdy ona jest w przestrzeni dyskusji, to nic nie trzeba zamieniać, wtedy otrzymujemy tą samą przestrzeń. To ona jest podana pośrednio, czy bezpośrednio, podana w tej nazwie, tylko zamieniona na nazwę niekanoniczną charakteryzująca dany projekt, gdy wszystkie parametry w bazie parametrów są podane.
Przestrzenie nazw możemy pisać o dowolnej wielkości liter, ona może być również nazwą kanoniczną. Przestrzenie te są opisane w tabelach na stronie: {{lr2|Moduły/Nazwy}}. Gdy z tej funkcji otrzymamy przestrzeń kanoniczną, bo akurat w pełnej nazwie strony ona jest, to jest zamieniana na niekanoniczną nazwę przestrzeni nazw dyskusji, charakterysttyczną dla danego projektu, jeżeli istnieją odpowiednie parametry w bazie parametrów w tablicach trannsportu w modułach.
Dla funkcji bez kodów (tzn. bez: {{Code|klucz projektu}} albo używane razem lub osobno: {{Code|kod projektu}} i {{Code|kod języka}}) opisujących dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Dyskusja":
local nazwa_przestrzeni_nazw_dyskusji_1 = nazwy_modul["PRZESTRZEŃDYSKUSJI"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Dyskusja szablonu":
local nazwa_przestrzeni_nazw_dyskusji_2 = nazwy_modul["PRZESTRZEŃDYSKUSJI"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Dyskusja szablonu":
local nazwa_przestrzeni_nazw_dyskusji_3 = nazwy_modul["PRZESTRZEŃDYSKUSJI"](pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Talk":
local nazwa_przestrzeni_nazw_dyskusji_1 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Talk":
local nazwa_przestrzeni_nazw_dyskusji_2 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template talk":
local nazwa_przestrzeni_nazw_dyskusji_3 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template talk":
local nazwa_przestrzeni_nazw_dyskusji_4 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZESTRZEŃDYSKUSJI}} dla projektu bieżącego polskiego Wikibooks, przestrzeń nazw po prawej sotrzymujemy będącą powtórzeniem tego po lewej, tylko że będącą powtorzzeniem tego po lewej, ale w wersji dyskusji:
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Szablon:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Szablon:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, nie tylko dla polskiego Wikibooks (dla jego mamy: {{Code|klucz projektu{{=}}pl:b}}), ale tutaj reprezentujemy angielska wikipedię, gdy nazwy niekanoniczne są jednoczeście nazwami kanonicznymi:
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
== Funkcje nazw strony, czyli rodzaje nazw po nazwach przestrzeni nazw w pełnych nazwach strony ==
=== {{Code|m.NAZWASTRONY}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|NAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw stron, bez nazwy przestrzeni, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania, bo w takim przypadku przestrzenią jest ciąg pusty, a z pełnych nazw stron z innymi przestrzeniami, otrzymujemy szereg od najbliższego dwukropka od lewej strony.
Funkcja wyciąga z pełnej nazwy strony nazwę strony bez przestrzeni nazw z formatowaniem tego ciągu, tzn. pierwsza litera z ciągu jest zamieniana na wielką, kolejne dolne myślniki lub spacje są zamieniane na jedną spację, ciąg jest trimowany, z jednej jak i z drugiej strony, czyli z dwóch stron.
Ta przestrzeń nazw, która jest usuwana z pełnej nazwy strony, tworząc nazwę strony, może być kanoniczna lub niekanoniczna, ale w wersji charakterystycznej dla danego projektu. Definicja kodów jest zdefiniowana jak w punkcie dla funkcji: {{Code|m.NAZWAPRZESTRZENI}}, w części dla funkcji bibliotecznej, z której ta funkcja korzysta. Ta predefiniowana fukcja korzysta z tejże właśnie funkcji.
Wywołanie tej funkcji, ale bez użycia kodów określające dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_3 = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_3 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_4 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|NAZWASTRONY}}, tutaj widzimy, że nazwy stron są z dokładnością do formatowania po prawej stronie tego po lewej, bez nazw przestrzeni:
* {{Code|{{s|NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Szablon:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Szablon:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, to samo, co powyżej, tylko dla projektów siostrzanych:
* {{Code|{{s|NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m["PEŁNANAZWASTRONY"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PEŁNANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw strony, z nazwą przestrzeni, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania, bo w takim przypadku przestrzenią jest ciąg pusty, a z pełnych nazw stron z innymi przestrzeniami, otrzymujemy szereg ten sam, tylko że sformatowany. Tutaj jest pewny wyjątek, a mianowicie w nich nazwy, jeżeli są one kanoniczne, to są zamieniane w nich na niekanoniczne.
Funkcja wyciąga z pełnej nazwy strony nazwę strony z przestrzenią nazw z formatowaniem tego ciągu, tzn. pierwsza litera nazwy strony, w pełnej nazwie strony, z ciągu jest zamieniana na wielką, kolejne dolne myślniki lub spacje są zamieniane na jedną spację, ciąg jest trimowany, z jednej jak i z drugiej strony, czyli z dwóch stron.
Ta przestrzeń nazw, która nie jest usuwana z pełnej nazwy strony, tworząc pelną nazwę strony, może być kanoniczna lub niekanoniczna, ale w wersji charakterystycznej dla danego projektu. Definicja kodów jest w punkcie jak dla funkcji: {{Code|m.NAZWAPRZESTRZENI}}, w części dla funkcji bibliotecznej, z której ta funkcja korzysta. Ta predefiniowana fukcja korzysta z tejże właśnie funkcji.
Wywołanie tej funkcji, ale bez użycia kodów określające dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_4 = "DYSKUSJA_SZABLONU:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "TALK:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_4);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_4);
</syntaxhighlight>
Przykłady dla szablonu {{s|PEŁNANAZWASTRONY}}, tutaj widzimy, że nazwy stron są z dokładnością do formatowania po prawej stronie tego po lewej, z nazwami przestrzeni:
* {{Code|{{s|PEŁNANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, to samo, co powyżej, tylko dla projektów siostrzanych:
* {{Code|{{s|PEŁNANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
== Funkcje nazw bazowe strony ==
=== {{Code|m.BAZOWANAZWASTRONY}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|BAZOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Jest to funkcja, z której z pełnej nazwy strony jest ucinana przestrzeń nazw i nazwa podstrony, wtedy zostaje nazwa strony nadrzędna, czyli zwraca nazwę bazową strony, bez nazwy przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONY(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_3 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|BAZOWANAZWASTRONY}}:
* {{Code|{{s|BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
=== {{Code|m["PEŁNABAZOWANAZWASTRONY"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PEŁNABAZOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Jest to funkcja, z której z pełnej nazwy strony nie jest ucinana przestrzeń nazw, ale za to jest odejmowana nazwa podstrony, wtedy zostaje pełna nazwa strony nadrzędna, czyli zwraca nazwę bazową strony z nazwą przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PEŁNABAZOWANAZWASTRONY}}:
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
== Funkcje nazw przejścia z jednego typu nazwy strony do drugiego ==
=== Funkcje nazw przedmiotowych ===
==== {{Code|m.PRZEDMIOTOWABAZOWANAZWASTRONY}} ====
===== Odpowiednik szablonowy =====
Odpowiednik szablonowy jest pod nazwą {{s|PRZEDMIOTOWABAZOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
===== Funkcja biblioteczna =====
Jest to funkcja, z której z pełnej nazwy strony nie jest ucinana przestrzeń nazw, tylko zamieniana na nazwę przedmiotową (o numerze {{Code|id}} parzystym), ale za to jest odejmowana nazwa podstrony, wtedy zostaje pełna nazwa strony nadrzędna, czyli zwraca nazwę bazową strony z przedmiotową nazwą przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZEDMIOTOWABAZOWANAZWASTRONY}}:
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
==== {{Code|m.PRZEDMIOTOWANAZWASTRONY}} ====
===== Odpowiednik szablonowy =====
Odpowiednik szablonowy jest pod nazwą {{s|PRZEDMIOTOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
===== Funkcja biblioteczna =====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw strony, z przedmiotową nazwą przestrzeni, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania zamieniony na przedmiotową, czyli tożsamość, bo w takim przypadku przestrzenią jest ciąg pusty, a z pełnych nazw stron z innymi przestrzeniami, otrzymujemy szereg ten sam, tylko że sformatowany, z tym zamienieniem.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_4 = "DYSKUSJA_SZABLONU:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "TALK:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_4);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_4);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZEDMIOTOWANAZWASTRONY}}:
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
=== Funkcje nazw dyskusji ===
=== {{Code|m.NAZWASTRONYDYSKUSJI}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|NAZWASTRONYDYSKUSJI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw strony, z nazwą przestrzeni nazwy dyskusji, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania zamieniony na dyskusji, a z pełnych nazw stron z przestrzeniami dyskusji, otrzymujemy ten sam szereg, tylko że sformatowany, a z pełnych nazw przedmiotowych otrzymujemy nazwy zamienione z tych przestrzeni nazw na dyskusji.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_4 = "DYSKUSJA_SZABLONU:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "TALK:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_4);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_4);
</syntaxhighlight>
Przykłady dla szablonu {{s|NAZWASTRONYDYSKUSJI}}:
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|NAZWASTRONYDYSKUSJI|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m.BAZOWANAZWASTRONYDYSKUSJI}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|BAZOWANAZWASTRONYDYSKUSJI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Jest to funkcja, z której z pełnej nazwy strony nie jest ucinana przestrzeń nazw, tylko zamieniana na nazwę dyskusji (o numerze {{Code|id}} nieparzystym), ale za to jest odejmowana nazwa podstrony, wtedy zostaje pełna nazwa strony nadrzędna, czyli zwraca nazwę bazową strony z nazwą przestrzeni nazw tego typu, czyli bezpośredniego rodzica w drzewie adresów stron, nie zważając na rodzaj przestrzeni.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "TalkLStrona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|BAZOWANAZWASTRONYDYSKUSJI}}:
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
tolr55fills157jg4gnsh5ph4cju75z
542639
542638
2026-05-11T19:31:37Z
Persino
2851
/* Tabela nazw i inne parametry, różnych funkcji nazw */
542639
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Tabela nazw i inne parametry, różnych funkcji nazw ==
Użycie tabeli {{Code|tabela nazw}} służąca do szybszego liczenia poszczególnych funkcji nazw w module {{m|Nazwy}}:
<syntaxhighlight lang="lua">
local nazwy_modul = require("Module:Nazwy");
-- Pełna nazwa strony:
local pelna_nazwa_strony = "Project talk:Moduły/Nazwy";
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz, a nie wiele razy bez niej.
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikibooks":
local nazwa_przestrzeni = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony,tabela_nazw);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony,tabela_nazw);
</syntaxhighlight>
Dodatkowo możemy użyć też innych parametrów, jak:
* Kody różnych projektów, językowych lub nie, różnego typu
** {{Code|klucz projektu}} - używany zamiast {{Code|kod języka}} i {{Code|kod projektu}}, są to kod języka i projektu, oddzielone od siebie dwukropkami,
** {{Code|kod języka}} - jest to pojedynczy kod języka, używany zamiast {{Code|klucz projektu}},
** {{Code|kod projektu}} - jest to pojedynczy kod projektu, używany zamiast {{Code|klucz projektu}},
* Inne parametry
** {{Code|bez zmiany adresu}} - wartość niepusta, wtedy do liczenia nazwy przestrzeni i nazwy strony nie jest usuwana część nagłówkowa i zapytań.
; Oto przykłady{{Dk}}
<syntaxhighlight lang="lua">
local nazwy_modul = require("Module:Nazwy");
-- Pełna nazwa strony:
local pelna_nazwa_strony = "Project talk:Moduły/Nazwy";
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw_1 = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz,a nie wiele razy bez niej.
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_1 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1);
-- Liczenie nazwy przestrzeni nazw:
local tabela_nazw_2 = {};
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_2 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2);
</syntaxhighlight>
Te funkcje wykorzystują dla projektu polskiego {{NAZWASERWISU|link=tak|po=a}} funkcję {{Code|{{sr|#m.Np|p=Nazwy/Tom I}}}}, a dla innych {{Code|{{sr|#m.NpDane|p=Nazwy/Tom I}}}}.
Wykorzystujemy tutaj parametr {{Code|bez zmiany adresu}}:
<syntaxhighlight lang="lua">
local nazwy_modul = require("Module:Nazwy");
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz,a nie wiele razy bez niej.
-- Pełna nazwa strony:
local pelna_nazwa_strony_z_zapytaniem_i_naglowkiem = "Project talk:Moduły/Nazwy?parametr_1=wartosc_1¶metr_2=wartosc_2#naglowek_strony";
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony_z_zapytaniem_i_naglowkiem,["klucz projektu"] ="pl:w", ["bez zmiany adresu"] = "tak", },tabela_nazw);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy?parametr_1=wartosc_1¶metr_2=wartosc_2#naglowek_strony":
local nazwa_strony_z_zapytaniem_i_naglowkiem = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony_z_zapytaniem_i_naglowkiem,["klucz projektu"] ="pl:w", ["bez zmiany adresu"] = "tak", },tabela_nazw);
</syntaxhighlight>
Funkcje nazw wykorzystują też trzeci parametr, który określa, czy ma liczyć jeszcze raz, czy kody przedstawiają przestrzeń bieżącą, tzn. parametr {{code|czy_wiki}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- czy_wiki
local czy_wiki = true;
-- Pełna nazwa strony:
local pelna_nazwa_strony = "Project talk:Moduły/Nazwy";
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw_1 = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz,a nie wiele razy bez niej.
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_1 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1, czy_wiki);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1, czy_wiki);
-- Liczenie nazwy przestrzeni nazw:
local tabela_nazw_2 = {};
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_2 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2, czy_wiki);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2, czy_wiki);
</syntaxhighlight>
== Różne funkcje nazw obliczające różne rodzaje nazw przestrzeni nazw (przed nazwami stron w pełnych nazwach) ==
=== {{Code|m.NAZWAPRZESTRZENI}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|NAZWAPRZESTRZENI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa przestrzeni służy do liczenia przestrzeni nazw strony z pełnych nazw stron. Gdy przestrzenią nazw jest, dla stron w przestrzeni głównej, przestrzeń '''główna''', wtedy nie ma ciągu reprezentującego w postaci niepustego ciągu, wtedy mamy dla pełnych nazw stron dla przestrzeni przeciwnej, ale nie musi być to przestrzeń dyskusji, wtedy ciąg opisujący ten jest ciągiem niepustym dla przestrzeni niegłównej. Przestrzeń nazw dla stron przedmiotowa jest zmieniana na przedmiotową, a dyskusji na dyskusji, tzn. one na przemian nie są zamieniane, tylko tego samego typu na te tym, ogólnie dla tej funkcji, a nie na przestrzeń typu przeciwnego.
Przestrzenie nazw możemy pisać o dowolnej wielkości liter, ona może być również nazwą kanoniczną. Przestrzenie te są opisane w tabelach na stronie: {{lr2|Moduły/Nazwy}}. Gdy z tej funkcji otrzymamy przestrzeń kanoniczną, bo akurat w pełnej nazwie strony ona jest, to jest zamieniana na niekanoniczną nazwę przestrzeni nazw, charakterysttyczną dla danego projektu, jeżeli istnieją odpowiednie parametry w bazie parametrów w tablicach trannsportu w modułach.
Dla funkcji bez kodów (tzn. bez: {{Code|klucz projektu}} albo używane razem lub osobno: {{Code|kod projektu}} i {{Code|kod języka}}) opisujących dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_1 = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_2 = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_3 = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_1 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Talk":
local nazwa_przestrzeni_nazw_2 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template":
local nazwa_przestrzeni_nazw_3 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template talk":
local nazwa_przestrzeni_nazw_4 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|NAZWAPRZESTRZENI}} dla projektu bieżącego polskiego Wikibooks, widzimy, że po prawwej stronie zawsze otrzymujemy przestrzeń tego powterzeniem po lewej, tylko że zawsze w wersji niekanoniczej:
* {{Code|{{s|NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Dyskusja:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Dyskusja:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Szablon:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Szablon:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, nie tylko dla polskiego Wikibooks (dla jego mamy: {{Code|klucz projektu{{=}}pl:b}}), ale tutaj reprezentujemy angielska wikipedię, gdy nazwy niekanoniczne są jednoczeście nazwami kanonicznymi:
* {{Code|{{s|NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} →{{Tt|{{NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWAPRZESTRZENI|Talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m["PRZEDMIOTOWAPRZESTRZEŃ"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PRZEDMIOTOWAPRZESTRZEŃ}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Przedmiotowa nazwa przestrzeni nazw służy do liczenia przestrzeni nazw strony z pełnych nazw stron. Gdy przestrzenią nazw jest dla stron w przestrzeni głównej lub dyskusji '''Dyskusja''' po zamianie na ten rodzaj przestrzeni, wtedy nie ma ciągu reprezentujące w postaci niepustego ciągu, wtedy mamy dla pełnych nazw stron dla przestrzeni przeciwnej (nie może być ta przestrzeń nazw dyskusji), ale nie musi być to przestrzeń dyskusji, wtedy ciąg opisujący ten jest ciągiem niepustym dla przestrzeni niegłównej. Tutaj, jeżeli pełna nazwa strony jest w przestrzeni dyskusji, to ona jest zamieniona na nazwę w przestrzeni przedmiotowej, a gdy ona jest w przestrzeni przedmiotowej, to nic nie trzeba zamieniać, wtedy otrzymujemy tą samą przestrzeń. To ona jest podana pośrednio, czy bezpośrednio, podana w tej nazwie, tylko zamieniona na nazwę niekanoniczną charakteryzująca dany projekt, gdy wszystkie parametry w bazie parametrów są podane.
Przestrzenie nazw możemy pisać o dowolnej wielkości liter, ona może być również nazwą kanoniczną. Przestrzenie te są opisane w tabelach na stronie: {{lr2|Moduły/Nazwy}}. Gdy z tej funkcji otrzymamy przestrzeń kanoniczną, bo akurat w pełnej nazwie strony ona jest, to jest zamieniana na niekanoniczną nazwę przestrzeni nazw przedmiotową, charakterysttyczną dla danego projektu, jeżeli istnieją odpowiednie parametry w bazie parametrów w tablicach trannsportu w modułach.
Dla funkcji bez kodów (tzn. bez: {{Code|klucz projektu}} albo używane razem lub osobno: {{Code|kod projektu}} i {{Code|kod języka}}) opisujących dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej dyskusji:
local pelna_nazwa_strony_1 = "Dyskusja:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_2 = "Dyskusja_szablonu:Szablon:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_przedmiotowa_1 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_przedmiotowa_2 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_przedmiotowa_3 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"](pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z tymi kodami, używając {{Code|klucz projektu}} albo {{Code|kod projektu}} i {{Code|kod jezyka}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_przedmiotowa_1 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_przedmiotowa_2 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template":
local nazwa_przestrzeni_nazw_przedmiotowa_3 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template":
local nazwa_przestrzeni_nazw_przedmiotowa_4 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZEDMIOTOWAPRZESTRZEŃ}} dla projektu bieżącego polskiego Wikibooks, otrzymujemy przestrzeń nazw pio prawej stronie będącą tego po lewej w wersji przedmiotowej:
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, nie tylko dla polskiego Wikibooks (dla jego mamy: {{Code|klucz projektu{{=}}pl:b}}), ale tutaj reprezentujemy angielska wikipedię, gdy nazwy niekanoniczne są jednoczeście nazwami kanonicznymi:
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m["PRZESTRZEŃDYSKUSJI"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PRZESTRZEŃDYSKUSJI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa przestrzeni nazw dyskusji służy do liczenia przestrzeni nazw strony z pełnych nazw stron. Gdy przestrzenią nazw jest dla stron w przestrzeni głównej, wtedy nie ma ciągu reprezentujące w postaci niepustego ciągu, ale przestrzeń dyskusji nie jest nigdy w tej przestrzeni, wtedy mamy dla pełnych nazw stron dla przestrzeni przeciwnej, ale nie musi być to przestrzeń dyskusji, wtedy ciąg opisujący ten jest ciągiem niepustym dla przestrzeni niegłównej. Tutaj, jeżeli pełna nazwa strony jest w przestrzeni przedmiotowej, to ona jest zamieniona na nazwę w przestrzeni dyskusji, a gdy ona jest w przestrzeni dyskusji, to nic nie trzeba zamieniać, wtedy otrzymujemy tą samą przestrzeń. To ona jest podana pośrednio, czy bezpośrednio, podana w tej nazwie, tylko zamieniona na nazwę niekanoniczną charakteryzująca dany projekt, gdy wszystkie parametry w bazie parametrów są podane.
Przestrzenie nazw możemy pisać o dowolnej wielkości liter, ona może być również nazwą kanoniczną. Przestrzenie te są opisane w tabelach na stronie: {{lr2|Moduły/Nazwy}}. Gdy z tej funkcji otrzymamy przestrzeń kanoniczną, bo akurat w pełnej nazwie strony ona jest, to jest zamieniana na niekanoniczną nazwę przestrzeni nazw dyskusji, charakterysttyczną dla danego projektu, jeżeli istnieją odpowiednie parametry w bazie parametrów w tablicach trannsportu w modułach.
Dla funkcji bez kodów (tzn. bez: {{Code|klucz projektu}} albo używane razem lub osobno: {{Code|kod projektu}} i {{Code|kod języka}}) opisujących dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Dyskusja":
local nazwa_przestrzeni_nazw_dyskusji_1 = nazwy_modul["PRZESTRZEŃDYSKUSJI"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Dyskusja szablonu":
local nazwa_przestrzeni_nazw_dyskusji_2 = nazwy_modul["PRZESTRZEŃDYSKUSJI"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Dyskusja szablonu":
local nazwa_przestrzeni_nazw_dyskusji_3 = nazwy_modul["PRZESTRZEŃDYSKUSJI"](pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Talk":
local nazwa_przestrzeni_nazw_dyskusji_1 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Talk":
local nazwa_przestrzeni_nazw_dyskusji_2 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template talk":
local nazwa_przestrzeni_nazw_dyskusji_3 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template talk":
local nazwa_przestrzeni_nazw_dyskusji_4 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZESTRZEŃDYSKUSJI}} dla projektu bieżącego polskiego Wikibooks, przestrzeń nazw po prawej sotrzymujemy będącą powtórzeniem tego po lewej, tylko że będącą powtorzzeniem tego po lewej, ale w wersji dyskusji:
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Szablon:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Szablon:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, nie tylko dla polskiego Wikibooks (dla jego mamy: {{Code|klucz projektu{{=}}pl:b}}), ale tutaj reprezentujemy angielska wikipedię, gdy nazwy niekanoniczne są jednoczeście nazwami kanonicznymi:
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
== Funkcje nazw strony, czyli rodzaje nazw po nazwach przestrzeni nazw w pełnych nazwach strony ==
=== {{Code|m.NAZWASTRONY}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|NAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw stron, bez nazwy przestrzeni, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania, bo w takim przypadku przestrzenią jest ciąg pusty, a z pełnych nazw stron z innymi przestrzeniami, otrzymujemy szereg od najbliższego dwukropka od lewej strony.
Funkcja wyciąga z pełnej nazwy strony nazwę strony bez przestrzeni nazw z formatowaniem tego ciągu, tzn. pierwsza litera z ciągu jest zamieniana na wielką, kolejne dolne myślniki lub spacje są zamieniane na jedną spację, ciąg jest trimowany, z jednej jak i z drugiej strony, czyli z dwóch stron.
Ta przestrzeń nazw, która jest usuwana z pełnej nazwy strony, tworząc nazwę strony, może być kanoniczna lub niekanoniczna, ale w wersji charakterystycznej dla danego projektu. Definicja kodów jest zdefiniowana jak w punkcie dla funkcji: {{Code|m.NAZWAPRZESTRZENI}}, w części dla funkcji bibliotecznej, z której ta funkcja korzysta. Ta predefiniowana fukcja korzysta z tejże właśnie funkcji.
Wywołanie tej funkcji, ale bez użycia kodów określające dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_3 = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_3 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_4 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|NAZWASTRONY}}, tutaj widzimy, że nazwy stron są z dokładnością do formatowania po prawej stronie tego po lewej, bez nazw przestrzeni:
* {{Code|{{s|NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Szablon:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Szablon:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, to samo, co powyżej, tylko dla projektów siostrzanych:
* {{Code|{{s|NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m["PEŁNANAZWASTRONY"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PEŁNANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw strony, z nazwą przestrzeni, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania, bo w takim przypadku przestrzenią jest ciąg pusty, a z pełnych nazw stron z innymi przestrzeniami, otrzymujemy szereg ten sam, tylko że sformatowany. Tutaj jest pewny wyjątek, a mianowicie w nich nazwy, jeżeli są one kanoniczne, to są zamieniane w nich na niekanoniczne.
Funkcja wyciąga z pełnej nazwy strony nazwę strony z przestrzenią nazw z formatowaniem tego ciągu, tzn. pierwsza litera nazwy strony, w pełnej nazwie strony, z ciągu jest zamieniana na wielką, kolejne dolne myślniki lub spacje są zamieniane na jedną spację, ciąg jest trimowany, z jednej jak i z drugiej strony, czyli z dwóch stron.
Ta przestrzeń nazw, która nie jest usuwana z pełnej nazwy strony, tworząc pelną nazwę strony, może być kanoniczna lub niekanoniczna, ale w wersji charakterystycznej dla danego projektu. Definicja kodów jest w punkcie jak dla funkcji: {{Code|m.NAZWAPRZESTRZENI}}, w części dla funkcji bibliotecznej, z której ta funkcja korzysta. Ta predefiniowana fukcja korzysta z tejże właśnie funkcji.
Wywołanie tej funkcji, ale bez użycia kodów określające dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_4 = "DYSKUSJA_SZABLONU:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "TALK:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_4);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_4);
</syntaxhighlight>
Przykłady dla szablonu {{s|PEŁNANAZWASTRONY}}, tutaj widzimy, że nazwy stron są z dokładnością do formatowania po prawej stronie tego po lewej, z nazwami przestrzeni:
* {{Code|{{s|PEŁNANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, to samo, co powyżej, tylko dla projektów siostrzanych:
* {{Code|{{s|PEŁNANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
== Funkcje nazw bazowe strony ==
=== {{Code|m.BAZOWANAZWASTRONY}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|BAZOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Jest to funkcja, z której z pełnej nazwy strony jest ucinana przestrzeń nazw i nazwa podstrony, wtedy zostaje nazwa strony nadrzędna, czyli zwraca nazwę bazową strony, bez nazwy przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONY(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_3 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|BAZOWANAZWASTRONY}}:
* {{Code|{{s|BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
=== {{Code|m["PEŁNABAZOWANAZWASTRONY"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PEŁNABAZOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Jest to funkcja, z której z pełnej nazwy strony nie jest ucinana przestrzeń nazw, ale za to jest odejmowana nazwa podstrony, wtedy zostaje pełna nazwa strony nadrzędna, czyli zwraca nazwę bazową strony z nazwą przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PEŁNABAZOWANAZWASTRONY}}:
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
== Funkcje nazw przejścia z jednego typu nazwy strony do drugiego ==
=== Funkcje nazw przedmiotowych ===
==== {{Code|m.PRZEDMIOTOWABAZOWANAZWASTRONY}} ====
===== Odpowiednik szablonowy =====
Odpowiednik szablonowy jest pod nazwą {{s|PRZEDMIOTOWABAZOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
===== Funkcja biblioteczna =====
Jest to funkcja, z której z pełnej nazwy strony nie jest ucinana przestrzeń nazw, tylko zamieniana na nazwę przedmiotową (o numerze {{Code|id}} parzystym), ale za to jest odejmowana nazwa podstrony, wtedy zostaje pełna nazwa strony nadrzędna, czyli zwraca nazwę bazową strony z przedmiotową nazwą przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZEDMIOTOWABAZOWANAZWASTRONY}}:
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
==== {{Code|m.PRZEDMIOTOWANAZWASTRONY}} ====
===== Odpowiednik szablonowy =====
Odpowiednik szablonowy jest pod nazwą {{s|PRZEDMIOTOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
===== Funkcja biblioteczna =====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw strony, z przedmiotową nazwą przestrzeni, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania zamieniony na przedmiotową, czyli tożsamość, bo w takim przypadku przestrzenią jest ciąg pusty, a z pełnych nazw stron z innymi przestrzeniami, otrzymujemy szereg ten sam, tylko że sformatowany, z tym zamienieniem.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_4 = "DYSKUSJA_SZABLONU:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "TALK:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_4);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_4);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZEDMIOTOWANAZWASTRONY}}:
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
=== Funkcje nazw dyskusji ===
=== {{Code|m.NAZWASTRONYDYSKUSJI}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|NAZWASTRONYDYSKUSJI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw strony, z nazwą przestrzeni nazwy dyskusji, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania zamieniony na dyskusji, a z pełnych nazw stron z przestrzeniami dyskusji, otrzymujemy ten sam szereg, tylko że sformatowany, a z pełnych nazw przedmiotowych otrzymujemy nazwy zamienione z tych przestrzeni nazw na dyskusji.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_4 = "DYSKUSJA_SZABLONU:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "TALK:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_4);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_4);
</syntaxhighlight>
Przykłady dla szablonu {{s|NAZWASTRONYDYSKUSJI}}:
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|NAZWASTRONYDYSKUSJI|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m.BAZOWANAZWASTRONYDYSKUSJI}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|BAZOWANAZWASTRONYDYSKUSJI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Jest to funkcja, z której z pełnej nazwy strony nie jest ucinana przestrzeń nazw, tylko zamieniana na nazwę dyskusji (o numerze {{Code|id}} nieparzystym), ale za to jest odejmowana nazwa podstrony, wtedy zostaje pełna nazwa strony nadrzędna, czyli zwraca nazwę bazową strony z nazwą przestrzeni nazw tego typu, czyli bezpośredniego rodzica w drzewie adresów stron, nie zważając na rodzaj przestrzeni.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "TalkLStrona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|BAZOWANAZWASTRONYDYSKUSJI}}:
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
76c7oi040g3dkt4hycjers99zj3bzj3
542641
542639
2026-05-11T20:19:48Z
Persino
2851
542641
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Tabela nazw i inne parametry, różnych funkcji nazw ==
Użycie tabeli {{Code|tabela nazw}} służąca do szybszego liczenia poszczególnych funkcji nazw w module {{m|Nazwy}}:
<syntaxhighlight lang="lua">
local nazwy_modul = require("Module:Nazwy");
-- Pełna nazwa strony:
local pelna_nazwa_strony = "Project talk:Moduły/Nazwy";
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz, a nie wiele razy bez niej.
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikibooks":
local nazwa_przestrzeni = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony,tabela_nazw);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony,tabela_nazw);
</syntaxhighlight>
Dodatkowo możemy użyć też innych parametrów, jak:
* Kody różnych projektów, językowych lub nie, różnego typu
** {{Code|klucz projektu}} - używany zamiast {{Code|kod języka}} i {{Code|kod projektu}}, są to kod języka i projektu, oddzielone od siebie dwukropkami,
** {{Code|kod języka}} - jest to pojedynczy kod języka, używany zamiast {{Code|klucz projektu}},
** {{Code|kod projektu}} - jest to pojedynczy kod projektu, używany zamiast {{Code|klucz projektu}},
* Inne parametry
** {{Code|bez zmiany adresu}} - wartość niepusta, wtedy do liczenia nazwy przestrzeni i nazwy strony nie jest usuwana część nagłówkowa i zapytań.
; Oto przykłady{{Dk}}
<syntaxhighlight lang="lua">
local nazwy_modul = require("Module:Nazwy");
-- Pełna nazwa strony:
local pelna_nazwa_strony = "Project talk:Moduły/Nazwy";
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw_1 = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz,a nie wiele razy bez niej.
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_1 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1);
-- Liczenie nazwy przestrzeni nazw:
local tabela_nazw_2 = {};
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_2 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2);
</syntaxhighlight>
Te funkcje wykorzystują dla projektu polskiego {{NAZWASERWISU|link=tak|po=a}} funkcję {{Code|{{sr|#m.Np|p=Nazwy/Tom I}}}}, a dla innych {{Code|{{sr|#m.NpDane|p=Nazwy/Tom I}}}}.
Wykorzystujemy tutaj parametr {{Code|bez zmiany adresu}}:
<syntaxhighlight lang="lua">
local nazwy_modul = require("Module:Nazwy");
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz,a nie wiele razy bez niej.
-- Pełna nazwa strony:
local pelna_nazwa_strony_z_zapytaniem_i_naglowkiem = "Project talk:Moduły/Nazwy?parametr_1=wartosc_1¶metr_2=wartosc_2#naglowek_strony";
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony_z_zapytaniem_i_naglowkiem,["klucz projektu"] ="pl:w", ["bez zmiany adresu"] = "tak", },tabela_nazw);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy?parametr_1=wartosc_1¶metr_2=wartosc_2#naglowek_strony":
local nazwa_strony_z_zapytaniem_i_naglowkiem = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony_z_zapytaniem_i_naglowkiem,["klucz projektu"] ="pl:w", ["bez zmiany adresu"] = "tak", },tabela_nazw);
</syntaxhighlight>
Funkcje nazw wykorzystują też trzeci parametr, który określa, czy ma liczyć jeszcze raz, czy kody przedstawiają przestrzeń bieżącą, tzn. parametr {{code|czy_wiki}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- czy_wiki
local czy_wiki = true;
-- Pełna nazwa strony:
local pelna_nazwa_strony = "Project talk:Moduły/Nazwy";
-- Tabela pozwalająca szybsze liczenie parametrów nazw funkcji od tych:
local tabela_nazw_1 = {};
---- bez tej tabeli, tez możemy liczyć, ale wtedy jest wolniejsze liczenia poszczególnych nazw przestrzeni i nazwy strony, z tą tabelą je liczymy tylko raz,a nie wiele razy bez niej.
-- Liczenie nazwy przestrzeni nazw:
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_1 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1, czy_wiki);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony,["klucz projektu"] ="pl:w", },tabela_nazw_1, czy_wiki);
-- Liczenie nazwy przestrzeni nazw:
local tabela_nazw_2 = {};
---- Tutaj uzyskamy "Dyskusja wikipedii":
local nazwa_przestrzeni_2 = nazwy_modul.NAZWAPRZESTRZENI({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2, czy_wiki);
-- Liczenie nazwy strony, nie pełnej, tzn. bez nazwy przestrzeni strony
---- Tutaj uzyskamy "Moduły/Nazwy":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY({ nazwa = pelna_nazwa_strony, ["kod projektu"] ="w", ["kod języka"] = "pl", },tabela_nazw_2, czy_wiki);
</syntaxhighlight>
== Różne funkcje nazw obliczające różne rodzaje nazw przestrzeni nazw (przed nazwami stron w pełnych nazwach) ==
=== {{Code|m.NAZWAPRZESTRZENI}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|NAZWAPRZESTRZENI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa przestrzeni służy do liczenia przestrzeni nazw strony z pełnych nazw stron. Gdy przestrzenią nazw jest, dla stron w przestrzeni głównej, przestrzeń '''główna''', wtedy nie ma ciągu reprezentującego w postaci niepustego ciągu, wtedy mamy dla pełnych nazw stron dla przestrzeni przeciwnej, ale nie musi być to przestrzeń dyskusji, wtedy ciąg opisujący ten jest ciągiem niepustym dla przestrzeni niegłównej. Przestrzeń nazw dla stron przedmiotowa jest zmieniana na przedmiotową, a dyskusji na dyskusji, tzn. one na przemian nie są zamieniane, tylko tego samego typu na te tym, ogólnie dla tej funkcji, a nie na przestrzeń typu przeciwnego.
Przestrzenie nazw możemy pisać o dowolnej wielkości liter, ona może być również nazwą kanoniczną. Przestrzenie te są opisane w tabelach na stronie: {{lr2|Moduły/Nazwy}}. Gdy z tej funkcji otrzymamy przestrzeń kanoniczną, bo akurat w pełnej nazwie strony ona jest, to jest zamieniana na niekanoniczną nazwę przestrzeni nazw, charakterysttyczną dla danego projektu, jeżeli istnieją odpowiednie parametry w bazie parametrów w tablicach trannsportu w modułach.
Dla funkcji bez kodów (tzn. bez: {{Code|klucz projektu}} albo używane razem lub osobno: {{Code|kod projektu}} i {{Code|kod języka}}) opisujących dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_1 = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_2 = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_3 = nazwy_modul.NAZWAPRZESTRZENI(pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_1 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Talk":
local nazwa_przestrzeni_nazw_2 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template":
local nazwa_przestrzeni_nazw_3 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template talk":
local nazwa_przestrzeni_nazw_4 = nazwy_modul.NAZWAPRZESTRZENI({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|NAZWAPRZESTRZENI}} dla projektu bieżącego polskiego Wikibooks, widzimy, że po prawwej stronie zawsze otrzymujemy przestrzeń tego powterzeniem po lewej, tylko że zawsze w wersji niekanoniczej:
* {{Code|{{s|NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Dyskusja:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Dyskusja:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Szablon:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Szablon:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, nie tylko dla polskiego Wikibooks (dla jego mamy: {{Code|klucz projektu{{=}}pl:b}}), ale tutaj reprezentujemy angielska wikipedię, gdy nazwy niekanoniczne są jednoczeście nazwami kanonicznymi:
* {{Code|{{s|NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} →{{Tt|{{NAZWAPRZESTRZENI|Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWAPRZESTRZENI|Talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWAPRZESTRZENI|Template_talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m["PRZEDMIOTOWAPRZESTRZEŃ"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PRZEDMIOTOWAPRZESTRZEŃ}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Przedmiotowa nazwa przestrzeni nazw służy do liczenia przestrzeni nazw strony z pełnych nazw stron. Gdy przestrzenią nazw jest dla stron w przestrzeni głównej lub dyskusji '''Dyskusja''' po zamianie na ten rodzaj przestrzeni, wtedy nie ma ciągu reprezentujące w postaci niepustego ciągu, wtedy mamy dla pełnych nazw stron dla przestrzeni przeciwnej (nie może być ta przestrzeń nazw dyskusji), ale nie musi być to przestrzeń dyskusji, wtedy ciąg opisujący ten jest ciągiem niepustym dla przestrzeni niegłównej. Tutaj, jeżeli pełna nazwa strony jest w przestrzeni dyskusji, to ona jest zamieniona na nazwę w przestrzeni przedmiotowej, a gdy ona jest w przestrzeni przedmiotowej, to nic nie trzeba zamieniać, wtedy otrzymujemy tą samą przestrzeń. To ona jest podana pośrednio, czy bezpośrednio, podana w tej nazwie, tylko zamieniona na nazwę niekanoniczną charakteryzująca dany projekt, gdy wszystkie parametry w bazie parametrów są podane.
Przestrzenie nazw możemy pisać o dowolnej wielkości liter, ona może być również nazwą kanoniczną. Przestrzenie te są opisane w tabelach na stronie: {{lr2|Moduły/Nazwy}}. Gdy z tej funkcji otrzymamy przestrzeń kanoniczną, bo akurat w pełnej nazwie strony ona jest, to jest zamieniana na niekanoniczną nazwę przestrzeni nazw przedmiotową, charakterysttyczną dla danego projektu, jeżeli istnieją odpowiednie parametry w bazie parametrów w tablicach trannsportu w modułach.
Dla funkcji bez kodów (tzn. bez: {{Code|klucz projektu}} albo używane razem lub osobno: {{Code|kod projektu}} i {{Code|kod języka}}) opisujących dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej dyskusji:
local pelna_nazwa_strony_1 = "Dyskusja:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_2 = "Dyskusja_szablonu:Szablon:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_przedmiotowa_1 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_przedmiotowa_2 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Szablon":
local nazwa_przestrzeni_nazw_przedmiotowa_3 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"](pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z tymi kodami, używając {{Code|klucz projektu}} albo {{Code|kod projektu}} i {{Code|kod jezyka}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_przedmiotowa_1 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "":
local nazwa_przestrzeni_nazw_przedmiotowa_2 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template":
local nazwa_przestrzeni_nazw_przedmiotowa_3 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template":
local nazwa_przestrzeni_nazw_przedmiotowa_4 = nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZEDMIOTOWAPRZESTRZEŃ}} dla projektu bieżącego polskiego Wikibooks, otrzymujemy przestrzeń nazw pio prawej stronie będącą tego po lewej w wersji przedmiotowej:
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Dyskusja_szablonu:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, nie tylko dla polskiego Wikibooks (dla jego mamy: {{Code|klucz projektu{{=}}pl:b}}), ale tutaj reprezentujemy angielska wikipedię, gdy nazwy niekanoniczne są jednoczeście nazwami kanonicznymi:
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}}} → {{Tt|{{PRZEDMIOTOWAPRZESTRZEŃ|Template_talk:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m["PRZESTRZEŃDYSKUSJI"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PRZESTRZEŃDYSKUSJI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa przestrzeni nazw dyskusji służy do liczenia przestrzeni nazw strony z pełnych nazw stron. Gdy przestrzenią nazw jest dla stron w przestrzeni głównej, wtedy nie ma ciągu reprezentujące w postaci niepustego ciągu, ale przestrzeń dyskusji nie jest nigdy w tej przestrzeni, wtedy mamy dla pełnych nazw stron dla przestrzeni przeciwnej, ale nie musi być to przestrzeń dyskusji, wtedy ciąg opisujący ten jest ciągiem niepustym dla przestrzeni niegłównej. Tutaj, jeżeli pełna nazwa strony jest w przestrzeni przedmiotowej, to ona jest zamieniona na nazwę w przestrzeni dyskusji, a gdy ona jest w przestrzeni dyskusji, to nic nie trzeba zamieniać, wtedy otrzymujemy tą samą przestrzeń. To ona jest podana pośrednio, czy bezpośrednio, podana w tej nazwie, tylko zamieniona na nazwę niekanoniczną charakteryzująca dany projekt, gdy wszystkie parametry w bazie parametrów są podane.
Przestrzenie nazw możemy pisać o dowolnej wielkości liter, ona może być również nazwą kanoniczną. Przestrzenie te są opisane w tabelach na stronie: {{lr2|Moduły/Nazwy}}. Gdy z tej funkcji otrzymamy przestrzeń kanoniczną, bo akurat w pełnej nazwie strony ona jest, to jest zamieniana na niekanoniczną nazwę przestrzeni nazw dyskusji, charakterysttyczną dla danego projektu, jeżeli istnieją odpowiednie parametry w bazie parametrów w tablicach trannsportu w modułach.
Dla funkcji bez kodów (tzn. bez: {{Code|klucz projektu}} albo używane razem lub osobno: {{Code|kod projektu}} i {{Code|kod języka}}) opisujących dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Dyskusja":
local nazwa_przestrzeni_nazw_dyskusji_1 = nazwy_modul["PRZESTRZEŃDYSKUSJI"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Dyskusja szablonu":
local nazwa_przestrzeni_nazw_dyskusji_2 = nazwy_modul["PRZESTRZEŃDYSKUSJI"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Dyskusja szablonu":
local nazwa_przestrzeni_nazw_dyskusji_3 = nazwy_modul["PRZESTRZEŃDYSKUSJI"](pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_projektu_Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template_talk:Strona_projektu_Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Talk":
local nazwa_przestrzeni_nazw_dyskusji_1 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Talk":
local nazwa_przestrzeni_nazw_dyskusji_2 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template talk":
local nazwa_przestrzeni_nazw_dyskusji_3 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa przestrzeni nazw o wartości: "Template talk":
local nazwa_przestrzeni_nazw_dyskusji_4 = nazwy_modul["PRZESTRZEŃDYSKUSJI"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZESTRZEŃDYSKUSJI}} dla projektu bieżącego polskiego Wikibooks, przestrzeń nazw po prawej sotrzymujemy będącą powtórzeniem tego po lewej, tylko że będącą powtorzzeniem tego po lewej, ale w wersji dyskusji:
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Szablon:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Szablon:Strona_projektu_Wikibooksa}}}}
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, nie tylko dla polskiego Wikibooks (dla jego mamy: {{Code|klucz projektu{{=}}pl:b}}), ale tutaj reprezentujemy angielska wikipedię, gdy nazwy niekanoniczne są jednoczeście nazwami kanonicznymi:
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZESTRZEŃDYSKUSJI|Template:Strona_projektu_Wikibooksa|klucz projektu=en:w}}}}
== Funkcje nazw strony, czyli rodzaje nazw po nazwach przestrzeni nazw w pełnych nazwach strony ==
=== {{Code|m.NAZWASTRONY}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|NAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw stron, bez nazwy przestrzeni, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania, bo w takim przypadku przestrzenią jest ciąg pusty, a z pełnych nazw stron z innymi przestrzeniami, otrzymujemy szereg od najbliższego dwukropka od lewej strony.
Funkcja wyciąga z pełnej nazwy strony nazwę strony bez przestrzeni nazw z formatowaniem tego ciągu, tzn. pierwsza litera z ciągu jest zamieniana na wielką, kolejne dolne myślniki lub spacje są zamieniane na jedną spację, ciąg jest trimowany, z jednej jak i z drugiej strony, czyli z dwóch stron.
Ta przestrzeń nazw, która jest usuwana z pełnej nazwy strony, tworząc nazwę strony, może być kanoniczna lub niekanoniczna, ale w wersji charakterystycznej dla danego projektu. Definicja kodów jest zdefiniowana jak w punkcie dla funkcji: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, w części dla funkcji bibliotecznej, z której ta funkcja korzysta. Ta predefiniowana fukcja korzysta z tejże właśnie funkcji.
Wywołanie tej funkcji, ale bez użycia kodów określające dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_3 = nazwy_modul.NAZWASTRONY(pelna_nazwa_strony_3,tabela_nazw_3);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_1 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_2 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_3 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local nazwa_strony_4 = nazwy_modul.NAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|NAZWASTRONY}}, tutaj widzimy, że nazwy stron są z dokładnością do formatowania po prawej stronie tego po lewej, bez nazw przestrzeni:
* {{Code|{{s|NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Szablon:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Szablon:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, to samo, co powyżej, tylko dla projektów siostrzanych:
* {{Code|{{s|NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONY|Template:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m["PEŁNANAZWASTRONY"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PEŁNANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw strony, z nazwą przestrzeni, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania, bo w takim przypadku przestrzenią jest ciąg pusty, a z pełnych nazw stron z innymi przestrzeniami, otrzymujemy szereg ten sam, tylko że sformatowany. Tutaj jest pewny wyjątek, a mianowicie w nich nazwy, jeżeli są one kanoniczne, to są zamieniane w nich na niekanoniczne.
Funkcja wyciąga z pełnej nazwy strony nazwę strony z przestrzenią nazw z formatowaniem tego ciągu, tzn. pierwsza litera nazwy strony, w pełnej nazwie strony, z ciągu jest zamieniana na wielką, kolejne dolne myślniki lub spacje są zamieniane na jedną spację, ciąg jest trimowany, z jednej jak i z drugiej strony, czyli z dwóch stron.
Ta przestrzeń nazw, która nie jest usuwana z pełnej nazwy strony, tworząc pelną nazwę strony, może być kanoniczna lub niekanoniczna, ale w wersji charakterystycznej dla danego projektu. Definicja kodów jest w punkcie jak dla funkcji: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, w części dla funkcji bibliotecznej, z której ta funkcja korzysta. Ta predefiniowana fukcja korzysta z tejże właśnie funkcji.
Wywołanie tej funkcji, ale bez użycia kodów określające dany projekt:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_4 = "DYSKUSJA_SZABLONU:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "TALK:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_4);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul["PEŁNANAZWASTRONY"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_4);
</syntaxhighlight>
Przykłady dla szablonu {{s|PEŁNANAZWASTRONY}}, tutaj widzimy, że nazwy stron są z dokładnością do formatowania po prawej stronie tego po lewej, z nazwami przestrzeni:
* {{Code|{{s|PEŁNANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty, to samo, co powyżej, tylko dla projektów siostrzanych:
* {{Code|{{s|PEŁNANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
== Funkcje nazw bazowe strony ==
=== {{Code|m.BAZOWANAZWASTRONY}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|BAZOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Jest to funkcja, z której z pełnej nazwy strony jest ucinana przestrzeń nazw i nazwa podstrony, wtedy zostaje nazwa strony nadrzędna, czyli zwraca nazwę bazową strony, bez nazwy przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "Szablon:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONY(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_3 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|BAZOWANAZWASTRONY}}:
* {{Code|{{s|BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
=== {{Code|m["PEŁNABAZOWANAZWASTRONY"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|PEŁNABAZOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Jest to funkcja, z której z pełnej nazwy strony nie jest ucinana przestrzeń nazw, ale za to jest odejmowana nazwa podstrony, wtedy zostaje pełna nazwa strony nadrzędna, czyli zwraca nazwę bazową strony z nazwą przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"](pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul["PEŁNABAZOWANAZWASTRONY"]({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PEŁNABAZOWANAZWASTRONY}}:
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PEŁNABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
== Funkcje nazw przejścia z jednego typu nazwy strony do drugiego ==
=== Funkcje nazw przedmiotowych ===
==== {{Code|m.PRZEDMIOTOWABAZOWANAZWASTRONY}} ====
===== Odpowiednik szablonowy =====
Odpowiednik szablonowy jest pod nazwą {{s|PRZEDMIOTOWABAZOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
===== Funkcja biblioteczna =====
Jest to funkcja, z której z pełnej nazwy strony nie jest ucinana przestrzeń nazw, tylko zamieniana na nazwę przedmiotową (o numerze {{Code|id}} parzystym), ale za to jest odejmowana nazwa podstrony, wtedy zostaje pełna nazwa strony nadrzędna, czyli zwraca nazwę bazową strony z przedmiotową nazwą przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.PRZEDMIOTOWABAZOWANAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZEDMIOTOWABAZOWANAZWASTRONY}}:
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWABAZOWANAZWASTRONY|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
==== {{Code|m.PRZEDMIOTOWANAZWASTRONY}} ====
===== Odpowiednik szablonowy =====
Odpowiednik szablonowy jest pod nazwą {{s|PRZEDMIOTOWANAZWASTRONY}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
===== Funkcja biblioteczna =====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw strony, z przedmiotową nazwą przestrzeni, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania zamieniony na przedmiotową, czyli tożsamość, bo w takim przypadku przestrzenią jest ciąg pusty, a z pełnych nazw stron z innymi przestrzeniami, otrzymujemy szereg ten sam, tylko że sformatowany, z tym zamienieniem.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_4 = "DYSKUSJA_SZABLONU:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Szablon:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "TALK:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_4);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.PRZEDMIOTOWANAZWASTRONY({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_4);
</syntaxhighlight>
Przykłady dla szablonu {{s|PRZEDMIOTOWANAZWASTRONY}}:
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{PRZEDMIOTOWANAZWASTRONY|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
=== Funkcje nazw dyskusji ===
=== {{Code|m.NAZWASTRONYDYSKUSJI}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|NAZWASTRONYDYSKUSJI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Nazwa strony służy do liczenia nazw strony, z pełnych nazw strony, z nazwą przestrzeni nazwy dyskusji, gdy przestrzenią jest strona w przestrzeni głównej, wtedy otrzymujemy w przybliżeniu ten sam ciąg z dokładnością do formatowania zamieniony na dyskusji, a z pełnych nazw stron z przestrzeniami dyskusji, otrzymujemy ten sam szereg, tylko że sformatowany, a z pełnych nazw przedmiotowych otrzymujemy nazwy zamienione z tych przestrzeni nazw na dyskusji.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_4 = "DYSKUSJA_SZABLONU:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.NAZWASTRONYDYSKUSJI(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "TALK:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona_ _ projektu_ _ Wikibooksa";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "TEMPLATE___ ___ TALK:Strona_ _ projektu_ _ Wikibooksa";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_1 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_2 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_3 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_4);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona projektu Wikibooksa":
local pelna_nazwa_strony_sformatowana_4 = nazwy_modul.NAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_4);
</syntaxhighlight>
Przykłady dla szablonu {{s|NAZWASTRONYDYSKUSJI}}:
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|SZABLON:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Dyskusja_ _ szablonu:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|NAZWASTRONYDYSKUSJI|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|TEMPLATE:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
* {{Code|{{s|NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu{{=}}en:w}}}} → {{Tt|{{NAZWASTRONYDYSKUSJI|Template_ _ talk:_ :_ Strona_ _ projektu_ _ Wikibooksa|klucz projektu=en:w}}}}
=== {{Code|m.BAZOWANAZWASTRONYDYSKUSJI}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|BAZOWANAZWASTRONYDYSKUSJI}}. Jego parametry są podobne do jego wersji bibliotecznej.
Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Jest to funkcja, z której z pełnej nazwy strony nie jest ucinana przestrzeń nazw, tylko zamieniana na nazwę dyskusji (o numerze {{Code|id}} nieparzystym), ale za to jest odejmowana nazwa podstrony, wtedy zostaje pełna nazwa strony nadrzędna, czyli zwraca nazwę bazową strony z nazwą przestrzeni nazw tego typu, czyli bezpośredniego rodzica w drzewie adresów stron, nie zważając na rodzaj przestrzeni.
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_2 = "SZABLON:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Szablon":
local pelna_nazwa_strony_3 = "TEMPLATE:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Dyskusja szablonu":
local pelna_nazwa_strony_3 = "Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_1,tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_2,tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_3,tabela_nazw_3);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Dyskusja szablonu:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI(pelna_nazwa_strony_4,tabela_nazw_4);
</syntaxhighlight>
Dla funkcji z kodami języka i projektu, charakteryzujące dany projekt siostrzany, polskiego Wikibooksa, w różnych wersjach językowych, czyli {{Code|["klucz projektu"] {{=}} "en:w"}}, lub podana w postaci dwóch osobnych zmiennych, czyli {{Code|["kod języka"] {{=}} "en"}} i {{Code|["kod projektu"] {{=}} "w"}}:
<syntaxhighlight lang="lua">
local nazwy_modul=require("Module:Nazwy");
-- Pełna nazwa strony w przestrzeni głównej:
local pelna_nazwa_strony_1 = "Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Talk":
local pelna_nazwa_strony_2 = "Talk:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template":
local pelna_nazwa_strony_3 = "Template:Strona/Poziom_1/Poziom_2/Poziom_3";
-- Pełna nazwa strony w przestrzeni "Template talk":
local pelna_nazwa_strony_4 = "Template talk:Strona/Poziom_1/Poziom_2/Poziom_3";
local tabela_nazw_1={};
-- Wynikiem jest nazwa strony o wartości: "Talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_1 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_1, ["klucz projektu"] = "en:w", }, tabela_nazw_1);
local tabela_nazw_2={};
-- Wynikiem jest nazwa strony o wartości: "TalkLStrona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_2 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_2, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_3={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_3 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_3, ["klucz projektu"] = "en:w", },tabela_nazw_2);
local tabela_nazw_4={};
-- Wynikiem jest nazwa strony o wartości: "Template talk:Strona/Poziom_1/Poziom_2":
local pelna_bazowa_nazwa_strony_4 = nazwy_modul.BAZOWANAZWASTRONYDYSKUSJI({nazwa = pelna_nazwa_strony_4, ["klucz projektu"] = "en:w", },tabela_nazw_2);
</syntaxhighlight>
Przykłady dla szablonu {{s|BAZOWANAZWASTRONYDYSKUSJI}}:
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Szablon:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Dyskusja szablonu:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3}}}}
Z kodami reprezentujące poszczególne projekty:
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
* {{Code|{{s|BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu{{=}}en:w}}}} → {{Tt|{{BAZOWANAZWASTRONYDYSKUSJI|Template talk:Strona/Poziom_1/Poziom_2/Poziom_3|klucz projektu=en:w}}}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9v9597iby2ddpt6uob3h43uh5bddis4
Wikibooks:Moduły/Książkowe
4
63252
542635
542625
2026-05-11T19:16:16Z
Persino
2851
542635
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|mw.uri.encode}}, a je odkodowuje się: {{Code|mw.uri.decode}}. A to wszystko robi funkcja: {{Code|html_modul.DeodeHtml}} (gdzie: {{Code|html_modul}}, jest to zmienna modułu: {{Code|„{{ld2|Html}}”}}), do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|html_modul.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|„NazwaFunkcjiNazw”}} jest: {{Code|„NazwaPrzestrzeni”}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|„NAZWAFUNKCJINAZW”}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|PełnaNazwaKsiążki}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według funkcji: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom II}}}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|Nazwy/Tom IV}}}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: „{{Code|PEŁNANAZWAKSIĄŻKI}}”, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: „{{Code|PEŁNANAZWAKSIĄŻKI}}”, i to jest ta wartość, jaką uzyskujemy z funkcji: {{Code|p["PełnaNazwaStronicowejKsiążki"]}}, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
062l0jhdbt7bp6soizx9nm20rd91rd2
542636
542635
2026-05-11T19:18:12Z
Persino
2851
/* {{Code|p["PełnaNazwaStronicowejKsiążki"]}} */
542636
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|mw.uri.encode}}, a je odkodowuje się: {{Code|mw.uri.decode}}. A to wszystko robi funkcja: {{Code|html_modul.DeodeHtml}} (gdzie: {{Code|html_modul}}, jest to zmienna modułu: {{Code|„{{ld2|Html}}”}}), do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|html_modul.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|„NazwaFunkcjiNazw”}} jest: {{Code|„NazwaPrzestrzeni”}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|„NAZWAFUNKCJINAZW”}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|PełnaNazwaKsiążki}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej samej funkcji. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|Nazwy/Tom IV}}}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: „{{Code|PEŁNANAZWAKSIĄŻKI}}”, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: „{{Code|PEŁNANAZWAKSIĄŻKI}}”, i to jest ta wartość, jaką uzyskujemy z funkcji: {{Code|p["PełnaNazwaStronicowejKsiążki"]}}, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4jj5zhcii5w8016d1kyajz48f1xvqaj
542637
542636
2026-05-11T19:21:24Z
Persino
2851
/* {{Code|p["PełnaNazwaStronicowejKsiążki"]}} */
542637
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|mw.uri.encode}}, a je odkodowuje się: {{Code|mw.uri.decode}}. A to wszystko robi funkcja: {{Code|html_modul.DeodeHtml}} (gdzie: {{Code|html_modul}}, jest to zmienna modułu: {{Code|„{{ld2|Html}}”}}), do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|html_modul.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|„NazwaFunkcjiNazw”}} jest: {{Code|„NazwaPrzestrzeni”}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|„NAZWAFUNKCJINAZW”}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej samej funkcji. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|Nazwy/Tom IV}}}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: „{{Code|PEŁNANAZWAKSIĄŻKI}}”, i to jest ta wartość, jaką uzyskujemy z funkcji: {{Code|p["PełnaNazwaStronicowejKsiążki"]}}, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0dd643fx4quzx97t9bn2cd1kf9r7ks0
542658
542637
2026-05-11T21:54:18Z
Persino
2851
/* {{Code|p["PełnaNazwaStronicowejKsiążki"]}} */
542658
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|mw.uri.encode}}, a je odkodowuje się: {{Code|mw.uri.decode}}. A to wszystko robi funkcja: {{Code|html_modul.DeodeHtml}} (gdzie: {{Code|html_modul}}, jest to zmienna modułu: {{Code|„{{ld2|Html}}”}}), do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|html_modul.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|„NazwaFunkcjiNazw”}} jest: {{Code|„NazwaPrzestrzeni”}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|„NAZWAFUNKCJINAZW”}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: „{{Code|PEŁNANAZWAKSIĄŻKI}}”, i to jest ta wartość, jaką uzyskujemy z funkcji: {{Code|p["PełnaNazwaStronicowejKsiążki"]}}, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
54t3das3x39heuw52hyiqktkkra9oqr
542659
542658
2026-05-11T21:55:16Z
Persino
2851
/* {{Code|p["PełnaNazwaStronicowejKsiążki"]}} */
542659
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|mw.uri.encode}}, a je odkodowuje się: {{Code|mw.uri.decode}}. A to wszystko robi funkcja: {{Code|html_modul.DeodeHtml}} (gdzie: {{Code|html_modul}}, jest to zmienna modułu: {{Code|„{{ld2|Html}}”}}), do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|html_modul.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|„NazwaFunkcjiNazw”}} jest: {{Code|„NazwaPrzestrzeni”}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|„NAZWAFUNKCJINAZW”}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji: {{Code|p["PełnaNazwaStronicowejKsiążki"]}}, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
88ttr6z96cgzru4pvn51t9hxzzubxrc
542660
542659
2026-05-11T21:56:28Z
Persino
2851
/* {{Code|p["PełnaNazwaStronicowejKsiążki"]}} */
542660
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|mw.uri.encode}}, a je odkodowuje się: {{Code|mw.uri.decode}}. A to wszystko robi funkcja: {{Code|html_modul.DeodeHtml}} (gdzie: {{Code|html_modul}}, jest to zmienna modułu: {{Code|„{{ld2|Html}}”}}), do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|html_modul.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|„NazwaFunkcjiNazw”}} jest: {{Code|„NazwaPrzestrzeni”}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|„NAZWAFUNKCJINAZW”}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
92aosoi7fp7qva5dugo0hknwoxr3hq0
542663
542660
2026-05-11T22:03:29Z
Persino
2851
542663
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|html_modul.DeodeHtml}} (gdzie: {{Code|html_modul}}, jest to zmienna modułu: {{Code|„{{ld2|Html}}”}}), do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|html_modul.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|„NazwaFunkcjiNazw”}} jest: {{Code|„NazwaPrzestrzeni”}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|„NAZWAFUNKCJINAZW”}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jllqy57dbbopu59piw4rudem6wom1no
542664
542663
2026-05-11T22:05:46Z
Persino
2851
542664
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#m.DeodeHtml|p=Html}}}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|html_modul.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|„NazwaFunkcjiNazw”}} jest: {{Code|„NazwaPrzestrzeni”}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|„NAZWAFUNKCJINAZW”}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1gtxu5k2xu1glxb0tkkpu5vhi96j1re
542665
542664
2026-05-11T22:06:18Z
Persino
2851
542665
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DeodeHtml|p=Html}}}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|html_modul.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|„NazwaFunkcjiNazw”}} jest: {{Code|„NazwaPrzestrzeni”}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|„NAZWAFUNKCJINAZW”}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qcgrinbg9u93rnd7ras4lgt7q3nz0cz
542666
542665
2026-05-11T22:07:17Z
Persino
2851
542666
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|html_modul.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|„NazwaFunkcjiNazw”}} jest: {{Code|„NazwaPrzestrzeni”}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|„NAZWAFUNKCJINAZW”}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qmps236pawf79353m4ndjqhhzd8rjp7
542667
542666
2026-05-11T22:09:15Z
Persino
2851
/* {{Code|NazwaKsiazkawaSilnik}} */
542667
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|html_modul.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|NazwaFunkcjiNazw}} jest: {{Code|NazwaPrzestrzeni}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|NAZWAFUNKCJINAZW}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ouduzwv7ty3v83du5jowzncj4w7s41j
542668
542667
2026-05-11T22:09:54Z
Persino
2851
/* {{Code|NazwaKsiazkawaSilnik}} */
542668
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{Code|{{sr|#p.DecodeHtml|p=Html}}}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|NazwaFunkcjiNazw}} jest: {{Code|NazwaPrzestrzeni}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|NAZWAFUNKCJINAZW}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rvdf7536tv0qs9wm3nsk0sviu7zemsv
542669
542668
2026-05-11T22:13:37Z
Persino
2851
542669
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DecodeHtml|p=Html}}}} {{Patrz|p.DecodeHtml}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{LinkPatrz|p.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{LinkPatrz|p.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|NazwaFunkcjiNazw}} jest: {{Code|NazwaPrzestrzeni}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|NAZWAFUNKCJINAZW}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
26nonlmx35c17cctkp5enplfveryp8l
542670
542669
2026-05-11T22:14:54Z
Persino
2851
/* {{Code|p["PełnaNazwaStronicowejKsiążki"]}} */
542670
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DecodeHtml|p=Html}}}} {{Patrz|p.DecodeHtml}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{LinkPatrz|p.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{LinkPatrz|p.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|NazwaFunkcjiNazw}} jest: {{Code|NazwaPrzestrzeni}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|NAZWAFUNKCJINAZW}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|NazwaPrzestrzeniKsiążki}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
86tf72ap4mart8p893smvkpusbntcfe
542671
542670
2026-05-11T22:18:09Z
Persino
2851
/* {{Code|p["PełnaNazwaStronicowejKsiążki"]}} */
542671
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DecodeHtml|p=Html}}}} {{Patrz|p.DecodeHtml}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{LinkPatrz|p.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{LinkPatrz|p.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|NazwaFunkcjiNazw}} jest: {{Code|NazwaPrzestrzeni}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|NAZWAFUNKCJINAZW}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeni"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeni"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw: {{Code|{{sr|#p["NazwaPrzestrzeni"]|p=Książkowe}}}}, dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|{{sr|#p["NazwaPrzestrzeniKsiążki"]|p=Książkowe}}}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
72d86ysxm12anah86xf1g2ldky5p1v9
542673
542671
2026-05-11T22:20:57Z
Persino
2851
542673
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DecodeHtml|p=Html}}}} {{Patrz|p.DecodeHtml}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{LinkPatrz|p.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{LinkPatrz|p.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|NazwaFunkcjiNazw}} jest: {{Code|NazwaPrzestrzeni}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|NAZWAFUNKCJINAZW}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p.NazwaPrzestrzeni}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.NazwaPrzestrzeni=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw: {{Code|{{sr|#p.NazwaPrzestrzeni|p=Książkowe}}}}, dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|{{sr|#p["NazwaPrzestrzeniKsiążki"]|p=Książkowe}}}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1eyzrdvatahvtn7xuloaecjqc0ajywz
542674
542673
2026-05-11T22:21:29Z
Persino
2851
/* {{Code|p["PełnaNazwaStronicowejKsiążki"]}} */
542674
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DecodeHtml|p=Html}}}} {{Patrz|p.DecodeHtml}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{LinkPatrz|p.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{LinkPatrz|p.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|NazwaFunkcjiNazw}} jest: {{Code|NazwaPrzestrzeni}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|NAZWAFUNKCJINAZW}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p.NazwaPrzestrzeni}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.NazwaPrzestrzeni=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw z: {{Code|{{sr|#p.NazwaPrzestrzeni|p=Książkowe}}}}, dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|{{sr|#p["NazwaPrzestrzeniKsiążki"]|p=Książkowe}}}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i to jest ta wartość, jaką uzyskujemy z funkcji, zawartej w module: {{Code|{{ld2|Książkowe}}}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
mltb3fd0rouwdfcgxxygalja2g0s7b9
542675
542674
2026-05-11T22:30:53Z
Persino
2851
/* {{Code|p["PełnaNazwaStronicowejKsiążki"]}} */
542675
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DecodeHtml|p=Html}}}} {{Patrz|p.DecodeHtml}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{LinkPatrz|p.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{LinkPatrz|p.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|NazwaFunkcjiNazw}} jest: {{Code|NazwaPrzestrzeni}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|NAZWAFUNKCJINAZW}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p.NazwaPrzestrzeni}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.NazwaPrzestrzeni=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw z: {{Code|{{sr|#p.NazwaPrzestrzeni|p=Książkowe}}}}, dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|{{sr|#p["NazwaPrzestrzeniKsiążki"]|p=Książkowe}}}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki z: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
foy3t2bjv0e5rq39qvijzmjy1ndv48i
542676
542675
2026-05-11T22:35:05Z
Persino
2851
/* {{Code|p["PełnaNazwaStronicowejKsiążki"]}} */
542676
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Książkowe}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł służy do obsługi na nazwach pełnych nazw stron {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, które są odpowiednio przekształcone, nie jak w funkcjach nazw {{ld2|Nazwy}}, która służy na bezpośredniego operowania na nazwach bez transformatowania nazw, a {{ld2|Książkowe}} dodatkowo transformuje nazwy, w fazie początkowej, tzn. jego argument, którym jest pełna nazwa strony, tylko jeden raz, i dzieli go na poszczególne nazwy możliwie minimalne przy pomocy tablicy:
<syntaxhighlight lang="lua">
local tabela_nazw={};
</syntaxhighlight>
która tworzona jest jako pusta tablica, której nie można modyfikować, tylko wsadzać do kolejnych funkcji nazw w omawianym module.
Poniższe funkcje mogą być wywołane w wersji ramkowej jako w postaci wikikodu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Książkowe|NazwaPrzestrzeni|Wikibooks:Moduły/Książkowe}}
</syntaxhighlight>
lub w wersji funkcyjnej programowej w języku {{lpg|Lua}} w {{lpr|Scribunto}}:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
-- Wynikiem poniższego wywołania jest: "Wikibooks";
local nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](nazwa_oryginalna,tabela_nazw);
</syntaxhighlight>
Wynikiem powyższego wywołania jest: "Wikibooks", z której są usunięte wszystkie kody HTML i inne elementy według innych funkcji zdefiniowanej podanej do funkcji, czyli nawet w sumie zdekodowania zakodowanej pełnej nazwy strony przedstawionej w postaci zakodowanej w postaci kodów HTML i URL, ze strony nazwy oryginalnej.
Użycie powyżej nazwy: "NazwaPrzestrzeni", jest przykładowe, ale tutaj można użyć innej nazwy symbolizującą funkcję nazw, które są podane poniżej.
Nazwy zakodowane kodami HTML, w tym przypadku mają one wzór: {{Code|&#(%d+)}} lub {{Code|&#x(%x+)}}, według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którym odpowiadają pewne nazwy. Też mogą być zakodowane funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, a je odkodowuje się: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. A to wszystko robi funkcja: {{Code|{{sr|#p.DecodeHtml|p=Html}}}} {{Patrz|p.DecodeHtml}}, do odkodowania nazwy zamiany kodów HTML na odpowiednie znaki, i dekodowania URL adresów stron internetowych, ale tutaj zastosowana do nazw.
== {{Code|NazwaKsiazkawaSilnik}} ==
Funkcja silnik potrzebna do budowy funkcji nazw, podane w poniższych rozdziałach, wykorzystują tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function NazwaKsiazkawaSilnik(frame,funkcja_nazw,tabela_nazw)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|funkcja_nazw}} - funkcja nazw z modułu {{Code|{{ld2|Nazwy}}}} (nazw),
* {{Code|tabela_nazw}} - tabela do szybszego uzyskiwania nazw, odziedziczona z modułu nazw.
Parametry tablicy ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - pełna, ewentualnie zakodowana URL i HTML, lub inaczej, nazwa przestrzeni nazw w przeciwieństwie do pełnej nazwy według modułu {{ld2|Nazwy}},
* {{Code|bez transformacji}} - niepuste, wtedy są wywoływane czysto funkcje w {{ld2|Nazwy}} bez żadnego odkodowania URL i HTML,
* {{Code|funkcja}} - dodatkowa funkcja nazw potrzebna do transformacji pełnej nazwy strony, domyślnie jest wywoływana funkcja {{Code|p[""]}},
* {{Code|funkcja decode}} - nazwa funkcji drugiej do dekodowania, domyślnie jest to {{LinkPatrz|p.DecodeHtml}},
* {{Code|moduł}} - nazwa modułu, w której jest zawarta funkcja: {{Code|funkcja}}, ale domyślnie dla: {{Code|p[""]}}, jest to o domyślnej nazwie: {{Code|{{ld|Książkowe}}}},
* {{Code|moduł decode}} - nazwa modułu funkcji: {{LinkPatrz|p.DecodeHtml}}, domyślnie jest to: {{Code|{{Ld|Html}}}}.
Jeżeli zmienna {{Code|bez transformacji}} jest pusta lub niepodana, to względem powyższych zmiennych jest dekodowana, a później transformowana do pewnej wartości w postaci pewnego szeregu nazw. W ten sposób uzyskana nazwa jest zwracana przez funkcję.
Można tworzyć nowe funkcje, nawet te zdefiniowane, i nowo-zdefiniowane przez programistę języka {{lpg|Lua}}, w module {{Code|{{ld2|Książkowe}}}}, przy pomocy schematu:
<syntaxhighlight lang="lua">
p["NazwaFunkcjiNazw"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAFUNKCJINAZW",tabela_nazw);
end;
</syntaxhighlight>
Przykładem nazwy: {{Code|NazwaFunkcjiNazw}} jest: {{Code|NazwaPrzestrzeni}}, przy drugi parametrze funkcji: {{Code|NazwaKsiazkawaSilnik}}, czyli: {{Code|NAZWAFUNKCJINAZW}}, przyjmuje, wtedy wartość: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}.
Funkcja lub funkcje zdefiniowane do dekodowana podana w postaci parametrów dla wartości zawartch w zmiennych: {{Code|funkcja decode}} i {{Code|moduł decode}}, a nawet do transformacji: {{Code|funkcja}} i {{Code|moduł}}, mogą być umieszczone w dowolnym module lub modułach, lub nawet w module samego programu, a zarazem biblioteki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== {{Code|p[""]}} ==
Funkcja tożsamościowa nazw, która zwraca wartość taką samą, jaką podaliśmy jako argument.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p[""]=function(parametr)
return parametr;
end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_oryginalna="Wikibooks:Moduły/Książkowe";
local nazwa_wyjsciowa=ksiazkowe_modul[""](nazwa_oryginalna);
if(nazwa_oryginalna==nazwa_wyjsciowa)then
return "Dwie nazwy są sobie równe";
end;
return "Dwie nazwy są sobie nierówne";
</syntaxhighlight>
== {{Code|p.NazwaPrzestrzeni}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.NazwaPrzestrzeni=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaPrzestrzeniKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAPRZESTRZENIKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy przestrzeni nazw książki bez nazwy przestrzeni dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaPrzestrzeniKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAPRZESTRZENIKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaTytułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["SUBNAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia sub nazwy książki bez nazwy przestrzeni nazw książki, czyli służy do liczenia tytułu książki, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaTytułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"SUBNAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułuKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy artykułu książki bez nazwy książki, ale przed tym wykorzystaniem dekoduje, pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułuKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAARTYKUŁUKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy książki bez nazwy przestrzeni nazw dostępne na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, bez nazwy artykułu danego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaKsiążki"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy książki z przestrzenią nazw ksiązki i z nazwą przestrzeni nazw dostępne na polskim: {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak}}, bez nazwy artykułu podanego artykułu, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaKsiążki"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWAKSIĄŻKI",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m["PEŁNANAZWASTRONY"]|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia pełnej nazwy strony (artykułu), ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["PełnaNazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"PEŁNANAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["NazwaArtykułu"]}} ==
Funkcja wykorzystuje funkcję nazw: {{Code|{{sr|#m.NAZWASTRONY|p=Nazwy/Tom II}}}}, modułu nazw: {{Code|{{ld2|Nazwy}}}}, do liczenia nazwy stron (artykułów) bez nazwy przestrzeni nazw dostępnych na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|po=ie}}, ale przed tym wykorzystaniem, dekoduje pełne nazwy względem pewnych funkcji w modułach, lub tego nie robi, jeżeli jest zdefiniowana niepusta zmienna: {{Code|bez transformacji}}, w tablicy ramki tej funkcji.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["NazwaArtykułu"]=function(frame,tabela_nazw)
tabela_nazw=tabela_nazw or {};
return NazwaKsiazkawaSilnik(frame,"NAZWASTRONY",tabela_nazw);
end;
</syntaxhighlight>
== {{Code|p["PełnaNazwaStronicowejKsiążki"]}} ==
Funkcja liczy nazwę książki, ale wpierw, musi zdekodować pełną nazwę strony, zwykle z URL i HTML, lub tych zdefiniowanych, a gdy nie podana jest nazwa strony, to liczy pełną nazwę artykułu według funkcji: {{Code|{{sr|#p["PełnaNazwaKsiążki"]|p=Książkowe}}}}, a gdy pełna nazwa strony przybiera wartość pustą według łańcuchów {{lpg|Lua}}, czyli {{Code|""}}, wtedy wykorzystuje funkcję systemową modułu nazw {{Code|{{ld2|Nazwy}}}}, czyli: {{Code|{{sr|#m["PEŁNANAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}} {{Patrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, i liczy w ten sposób ciąg pusty, w przeciwnym wypadku, gdy pełna nazwa strony posiada na początku dwukropek, wtedy jest liczona pełna nazwa książki według tej funkcji: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. W innym wypadku, gdy tak nie jest, wtedy jest liczona nazwa przestrzeni nazw funkcją: {{Code|{{sr|#m.NAZWAPRZESTRZENI|p=Nazwy/Tom II}}}}, by wskazać, że strona nie jest w przestrzeni głównej, wtedy jest liczona pełna nazwa książki na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}. A jeżeli jednak tak nie jest, bo mamy wtedy możliwą przestrzeń główną według wskazań początkowych, wtedy wypadałoby policzyć nazwę książki, która musi istnieć według z: {{Code|{{sr|#m["NAZWAKSIĄŻKI"]|p=Nazwy/Tom IV}}}}, a jeśli ona rzeczywiście nie istnieje, to może być to przestrzeń {{Np|Wikijunior|link=tak}}, wtedy liczymy według: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, a jeżeli to nie jest ta przestrzeń nazw dla istniejącej na pewno strony, tylko ta strona nie istnieje, wtedy musimy policzyć nazwę przestrzeni nazw z: {{Code|{{sr|#p.NazwaPrzestrzeni|p=Książkowe}}}}, dostępną na polskim {{NAZWASERWISU|link=tak|klucz projektu=b|wikipedia=tak|po=ie}}, i nazwę przestrzeni książki funkcją: {{Code|{{sr|#p["NazwaPrzestrzeniKsiążki"]|p=Książkowe}}}}, aktualnej strony, które łączymy razem w pełną nazwę przestrzeni książki z nazwą strony podanej jako pierwszy argument naszej rozważanej funkcji, co na samym końcu pozostało policzyć na podstawie: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}, którą jest wykryta pełna nazwa książki na samym końcu obliczeń.
Nasza funkcja liczy pełną nazwę książki, do której należy podana nazwa książki, która może mieć niepełny adres, według metod powiedzianych powyżej, sprawdzając różne możliwości, wtedy otrzymujemy pełną nazwą książki na samym końcu, do której należy ten artykuł, który został podany, szczególną postacią pełnej nazwy artykułu jest nazwa książki.
Przykładem użycia:
<syntaxhighlight lang="lua">
local ksiazkowe_modul=require("Module:Książkowe");
local tabela_nazw={};
local nazwa_artykułu="Ksiązka/Artykuł";
local nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_artykułu,tabela_nazw);
</syntaxhighlight>
Wtedy możliwymi wartościami pełnych wartości nazw artykułów dla wartości niepełnej nazwy artykułu: {{Code|Książka/Artykuł}}, są:
* {{Code|Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|(main)|link=tak}},
* {{Code|Wikijunior:Książka/Artykuł}} - gdy strona leży w przestrzeni nazw {{Np|Wikijunior|link=tak}},
* {{Code|Wikibooks:Brudnopis/<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{lr2|Brudnopis}}/<użytkownik>''', w przestrzeni nazw {{Np|Project|link=tak}},
* {{Code|Wikipedysta:<użytkownik>/Książka/Artykuł}} - gdy początkowy artykuł podanej w nawie rozważanej funkcji leży w niby-przestrzeni nazw: '''{{Np|User|link=tak}}:<użytkownik>''', w przestrzeni nazw {{Np|User|link=tak}}.
Jeżeli mamy te artykuły w możliwych do uzyskania postaciach, to wtedy jest liczona ich pełna nazwa książki przy pomocy: {{LinkPatrz|PEŁNANAZWAKSIĄŻKI-PełnaNazwaStronicowejKsiążki}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
l98wcuyiv7g0yar1vdvd5xry5rist5t
Wikibooks:Moduły/Parametry
4
63291
542693
542632
2026-05-12T10:47:08Z
Persino
2851
/* {{Code|p.PobierzParametryRamki}} */
542693
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={["nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwaa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|7}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypaadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowp funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](table,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypaadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"}=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabelka_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
oc656l60nq7hvf9hguswi9nridqm0ja
Wikibooks:Moduły/Strony
4
63361
542700
542633
2026-05-12T11:30:45Z
Persino
2851
542700
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Strony}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local strony_modul=require("Module:Strony");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje z {{Code|p.}} należą do tablicy transportu zwracanej przez moduł: {{Code|{{ld2|Strony}}}}, a bez niego to są funkcje lokalne w tym module oznaczone słowem {{Code|local}}.
Funkcje w tym module są wykorzystywane do sprawdzania, czy dany tekst spełnia jakieś warunki, funkcje bez {{Code|p.}} są wykorzystywane tylko w tym module, a z tym są bazą do imolementacji modułu: {{Code|{{ld2|Sprawdź}}}}, w funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, które służą do sprawdzania parametrów szablonów za pomocą funkcji w module: {{Code|{{ld2|Strony}}}}, ta funkcja też korzysta z innych funkcji z innych modułów w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== Właściwe lokalne funkcje sprawdzające ==
=== {{Code|checkUri}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Funkcja sprawdza, czy podany: {{Code|uri}}, jest adresem URL.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function checkUri(uri)...end;
</syntaxhighlight>
Funkcja obsługuje protokoły dla adresów URL podane w liście dla stronie {{ld2|Strony/dane}}:
<syntaxhighlight lang="lua">
p.obslugiwaneUriSchematy={
-- najczęściej używane
'http://', 'https://', '//',
-- możliwe
'bitcoin:', 'ftp://', 'ftps://', 'geo:', 'git://', 'gopher://',
'irc://', 'ircs://', 'magnet:', 'mailto:', 'mms://', 'news:',
'nntp://', 'redis://', 'sftp://', 'sip:', 'sips:', 'sms:', 'ssh://',
'svn://', 'tel:', 'telnet://', 'urn:', 'worldwind://', 'xmpp:',
};
</syntaxhighlight>
Funkcja zwraca wartość logiczną {{Code|true}}, gdy podany adres jest adresem URL, według obsługiwanych protokołów, a jeśli nie, to ona zwróci wartość {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local uri="https://em.wikibooks.org/wiki/Mechanik_teoretyczna";
local czy_tak=checkUri(uri);
</syntaxhighlight>
Funkcja w przykładzie zrzuci wartość logiczną {{Code|czy_tak {{=}} true}}, czyli prawdę.
=== {{Code|checkImageName}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function checkImageName(name_nieprzetworzone,przestrzen)...end;
</syntaxhighlight>
Funkcja sprawdza, czy podany adres wewnętrzny jest adresem pliku. Możliwe są dwa warianty, wariant: {{Code|przestrzen {{=}} false}}, gdzie nie może być podana przestrzeń nazw plikowa, tzn., która jest podana w zmiennej na stronie: {{Code|{{ld2|Strony/dane}}}}, którego fragment:
<syntaxhighlight lang="lua">
prefix = {
plik = true,
image = true,
grafika = true,
file = true,
media = true,
},
</syntaxhighlight>
lub może, ale nie musi być podana z dodatkowymi przestrzeniami, nawet nieplikowymi, w takim przypadku ta funkcji zwróci wynik: {{Code|false}}, a w przeciwnym wypadku, funkcja może zrzucić wartość {{Code|true}}, ale nie musi.
Możliwe są rozszerzenia plików, dla których ta funkcja może dać wynik {{Code|true}}, tzn.:
<syntaxhighlight lang="lua">
extension = {
flac = true,
jpg = true,
jpeg = true,
jpe = true,
mid = true,
midi =true,
mp3 = true,
mpg = true,
mpeg = true,
oga = true,
ogg = true,
ogv = true,
opus = true,
png = true,
svg = true,
tif = true,
tiff = true,
gif = true,
xcf = true,
pdf = true,
djvu = true,
wav = true,
webm = true,
webp = true,
},
</syntaxhighlight>
Ale plik też nie musi mieć rozszerzenia, ale może, pliki bez nich bez przestrzeni plikowych:
<syntaxhighlight lang="lua">
name = {
["@"]=true,
},
</syntaxhighlight>
Funkcja zwróci wartość {{Code|true}}, gdy strona jest prawidłowych adresem wewnętrznym strony przestrzeni plikowej, gdy drugi argument jest {{Code|false}}, strona nie może być podana z przestrzeniami plikowymi, ale z innymi już tak, co wtedy jest to traktowane jako część nazwy w przestrzeni nazw: {{Np|File|link=tak}}. Gdy drugi parametr ma wartość prawdziwą, wtedy strona może być podana z przestrzenią lub nie, byle tylko był to, pełny lub nie, adres strony pliku.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local plik="Grafika:Strona_pliku.jPG";
local czy_tak=checkImageName(plik,true);
</syntaxhighlight>
Strona jest podana, z prawidłową przestrzenią plikową, z prawidłowym rozszerzeniem pliku, więc wtedy funkcja zrzuci wartość {{Code|czy_tak}} równą {{Code|true}}.
; Drugi
<syntaxhighlight lang="lua">
local plik="Strona_pliku.jPG";
local czy_tak=checkImageName(plik,false);
</syntaxhighlight>
Strona jest podana bez przestrzeni plikowej, ale z prawidłowym rozszerzeniem pliku, więc wtedy funkcja zrzuci wartość {{Code|czy_tak}} równą {{Code|true}}.
=== {{Code|findPlainHttp}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Funkcja sprawdza, czy adres: {{Strong|http://}}, czy {{Strong|https://}}, w tekście, czy istnieje, sprawdza, czy ona nie jest częścią linku zewnętrznego, a jeśli nie, to funkcja zwraca wynik {równy, ale nie {{Code|nil}}, w przeciwnym wypadku {{Code|nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function findPlainHttp(text)...end;
</syntaxhighlight>
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local czy_tak=findPlainHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local czy_tak=findPlainHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|nil}}.
=== {{Code|findAnyHttp}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function findAnyHttp(text)...end;
</syntaxhighlight>
Funkcja sprawdza, czy adres: {{Strong|http://}}, czy {{Strong|https://}}, jest w tekście, wtedy funkcji zwróci wynik nienilowy, a w przeciwym wypadku {{Code|nil}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local czy_tak=findAnyHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local czy_tak=findAnyHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
=== {{Code|findFile}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Funkcja sprawdza, czy w tekście jest wywołanie plikowe. Funkcja chowaj wyjątek z obrazka generowanego przez: {{Code|{{s|Link-interwiki|z przestrzenią=tak}}}}.
Definicji skrótowa funkcji:
<syntaxhighlight lang="lua">
local function findFile(text)...end;
</syntaxhighlight>
Funkcja rozpoznaje rozszerzenia plików: {{Strong|Plik}}, {{Strong|File}}, {{Strong|Grafika}} i {{Strong|Image}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tekst="Strona z plikiem: [[Plik:Strona_plikowa.jpg|thumb|right|250px|link=w:Strona_na_wikipedii|Oto jest opis]], a oto jest dalszy tekst.";
local czy_tak=findFile(tekst);
</syntaxhighlight>
Funkcja zwróci wartość nienilową, czyli pozytywną.
== Funkcje obuduwujące właściwe funkcje sprawdzające ==
=== {{Code|p.SprawdzanieURL}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieURL(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{Code|{{sr|#checkUri|p=Strony}}}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|url}} lub {{Code|1}} - adres URL strony internetowej.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|url}}, czy {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local uri="https://em.wikibooks.org/wiki/Mechanik_teoretyczna";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.SprawdzanieURL(uri);
</syntaxhighlight>
Funkcja w przykładzie zrzuci wartość logiczną {{Code|czy_tak {{=}} true}}, czyli prawdę.
=== {{Code|p.SprawdzanieNazwyPlikowe}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieNazwyPlikowe(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{Code|{{sr|#checkImageName|p=Strony}}}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|nazwa}} lub {{Code|1}} - nazwa strony, ewentualnie z rozszerzeniem strony,
* {{Code|przestrzeń}} lub {{Code|2}} - czy ma uwzględniać przestrzeń nazw strony.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|nazwa}}, czy {{Code|1}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local plik="Grafika:Strona_pliku.jPG";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.SprawdzanieNazwyPlikowe(plik);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local plik="Strona_pliku.jPG";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.SprawdzanieNazwyPlikowe(plik);
</syntaxhighlight>
Funkcja zrzuci wynik nienilowy.
=== {{Code|p.ZnajdowanieNormalnychStronHttp}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieNormalnychStronHttp(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{Code|{{sr|#findPlainHttp|p=Strony}}}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} lub {{Code|1}} - jest to tekst do sprawdzenia, czy strony {{Strong|http://}} i {{Strong|https://}}, są nie w linku zewnętrznym.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|tekst}}, czy {{Code|1}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieNormalnychStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieNormalnychStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|nil}}.
=== {{Code|p.ZnajdowanieJakikolwiekStronHttp}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieJakikolwiekStronHttp(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{Code|{{sr|#findAnyHttp|p=Strony}}}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} lub {{Code|1}} - jest to tekst do sprawdzenia, czy strony {{Strong|http://}} i {{Strong|https://}}, są w tekście.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|tekst}}, czy {{Code|1}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieJakikolwiekStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieJakikolwiekStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
=== {{Code|p.ZnajdowaniePlikowe}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowaniePlikowe(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{Code|{{sr|#findFile|p=Strony}}}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} lub {{Code|1}} - tekst do spradzenia, czy strona ma wywołania plikowe.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|tekst}}, czy {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tekst="Strona z plikiem: [[Plik:Strona_plikowa.jpg|thumb|right|250px|link=w:Strona_na_wikipedii|Oto jest opis]], a oto jest dalszy tekst.";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowaniePlikowe(tekst);
</syntaxhighlight>
Funkcja zwróci wartość nienilową, czyli pozytywną.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rfhet4pco7cb5dqo6o18g8f64si3tot
Wikibooks:Moduły/Html
4
63462
542661
542599
2026-05-11T21:59:36Z
Persino
2851
542661
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych,
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest tekst wywołania: \"#\"";
local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
== {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NAZWASERWISU|link=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},};
local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},};
local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeSpecjalneZnakiHtml(frame,...)}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,};
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},};
local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local html2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},};
local tekst2=html_modul.EncodeZnakProloguList(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
</syntaxhighlight>
== {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,...)}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona?action=edit§ion=2";
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona?action=edit&section=2";
</syntaxhighlight>
== {{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona=Parametry";
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona=Parametry";
</syntaxhighlight>
Użycie w szablonie w postaci parametry nienazwanego (numerowanego):
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany.
== {{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="subst:msg:Szablon:Nazwa_strony";
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},};
local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="subst:msg:Szablon:Nazwa_strony";
</syntaxhighlight>
== {{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr(frame,...)|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}},
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local znak="k";
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,};
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},};
local tekst2=html_modul.KodHTMLZnaku(znak);
-- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",};
local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k";
local tekst3="&#107;";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}}
* {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k"; -->
{{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "&#107;"; -->
{{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr(frame,...)|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8,
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="k{{s";
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,};
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},};
local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak);
-- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",};
local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k{{s";
local tekst3="k&#123;&#123;s";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}}
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k{{s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "k&#123;&#123;s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml(frame,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
* {{Code|id}} - ciąg do przeinaczenia,
* {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml(frame,...)|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,true);
</syntaxhighlight>
Wynikiem działania jest wartość ostatniej zmiennej:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "‎", składający się z trzech bajtów: "â", "€" i "Ž";
local tekst="Oto jest znak: ‎.";
-- Zamiana tego kodu na znak;
tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
-- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty;
tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst);
</syntaxhighlight>
Wynikiem tego kodu jest wartość ukryta pod zmienną:
<syntaxhighlight lang="lua">
local tekst="Oto jest znak: .";
</syntaxhighlight>
== {{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|n=mw.text.encode}}}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy zakodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: \"‎\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
local parametr2=html_modul.EncodeWiki(parametr,false);
local parametr3=html_modul.EncodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości:
<syntaxhighlight lang="lua">
local parametr2="Oto_jest_znak:_""_i_inne_znaki_w_URL:_"https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&action=edit#Obsługa;"";
local parametr3="__Oto jest znak: "" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
</syntaxhighlight>
== {{Code|p.DecodeWiki}} ==
Funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.decode|n=mw.text.decode}}}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy odkodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: "‎" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
local parametr2=html_modul.DecodeWiki(parametr,false);
local parametr3=html_modul.DecodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość:
<syntaxhighlight lang="lua">
local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"";
local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
</syntaxhighlight>
== {{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do sprawdzenia - wymagany,
* {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}},
* {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Pierwszy przykład:
local parametr1="abc?edit=action";
-- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany;
local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false);
-- Drugi przykład:
local parametr2="a%YTbc?edit=action;";
-- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany;
local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false);
</syntaxhighlight>
== {{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do transformacji kodowania,
* {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
{{Hr}}
Przykłady pierwszy - podany tekst już zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="abc___?action=edit&section=21#nagłówek";
-- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&", czyli "&" został zamieniony na "&";
local parametr2="abc_?action=edit&section=21#nagłówek";
</syntaxhighlight>
{{Hr}}
Przykłady drugi - podany tekst jeszcze nie zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="a%YTbc___?action=edit;";
-- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "=";
local parametr2="a%25YTbc___%3Faction%3Dedit;";
</syntaxhighlight>
== {{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do odkodowania,
* {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}},
* {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków;
local parametr="a%25YTbc___%3Faction%3Dedit&section=23;";
local parametr2=html_modul.DecodeHtml(parametr,true);
</syntaxhighlight>
Wynik funkcji jest ukryty pod adresem:
<syntaxhighlight lang="lua">
-- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki;
local parametr2="a%YTbc ?action=edit§ion=23;";
</syntaxhighlight>
== {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>";
local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst);
</syntaxhighlight>
Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz;
local tekst2="<span id=\"Znaki<>\"\">To jest zawartość</span>";
</syntaxhighlight>
== {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\"nazwa\"\">Zawartość znacznika</a>";
local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst);
</syntaxhighlight>
Otrzymana zawartość jest pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że kody odpowiednie HTML, tzn.: "<", ">" i "&" zostały zamienione na odpowwiednie znaki;
local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>";
</syntaxhighlight>
== {{Code|p["NagłówekStronyAdresu"](frame,...)}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr(frame,...)|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"](frame,...)|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"](frame,...)|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"](frame,...)|p=Html}}}}.
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu);
local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość;
local naglowek="Nagłówek strony";
</syntaxhighlight>
== {{Code|p["ParametryStronyAdresu"](frame,...)}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr(frame,...)|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"](frame,...)|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"](frame,...)|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"](frame,...)|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu);
local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne;
local parametry="action=edit§ion=2";
</syntaxhighlight>
== {{Code|p["NazwaStronyAdresu"](frame,...)}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr(frame,...)|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"](frame,...)|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"](frame,...)|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"](frame,...)|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu);
local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna";
</syntaxhighlight>
== {{Code|p["NazwaStronyZParametrówStronyAdresu"](frame,...)}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr(frame,...)|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
-- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true);
local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="Strona główna";
</syntaxhighlight>
== {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](frame,...)}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr(frame,...)|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"](frame,...)|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"](frame,...)|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"](frame,...)|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu);
local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość pełnego adresu strony poprawiona jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr(frame,...)|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony,
* {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html"):
local url="//pl.wikibooks.org/wiki/Strona_artykułu";
local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,};
</syntaxhighlight>
Wartości zmiennych kryją się pod:
<syntaxhighlight lang="lua">
-- Widzimy, że nazwa serwera jest bez prawych ukośników;
local serwer="pl.wikibooks.org";
-- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi;
local nazwa="wiki/Strona_artykułu";
-- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu";
</syntaxhighlight>
== {{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr(frame,...)|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local mail="użytkownik@skrzynka.org";
-- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail);
local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,};
---
local url="https://pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url);
local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="//pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url);
local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url);
local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,};
</syntaxhighlight>
Wyniki otrzymane z powyższych przykładów są:
<syntaxhighlight lang="lua">
local adres1,protokol1,sposob1="//skrzynka.org","mail",1;
local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2;
local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3;
local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1;
</syntaxhighlight>
== {{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi;
local tekst="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
-- Wywołanie funkcji odkodujący kody HTML;
local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst);
</syntaxhighlight>
Otrzymany wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Widzimy, że tekst został zdekodowany ze znaków HTML;
local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local tekst2=html_modul.ZamianaEncodeTekst(tekst);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}:
<syntaxhighlight lang="lua">
local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru;
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
-- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku;
local wzor="[^/%?%=&:%#]+";
-- Wywołanie funkcji kodującej;
local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2:}}
<syntaxhighlight lang="lua">
-- Zakodowało jeszcze więcej niż na samym początku było zakodowane;
local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.StronaParametryIdentyfikacjaAdresuHtml(adres)}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do potrzelenia na trzy części.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek";
local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres);
</syntaxhighlight>
Otrzymane wartości tych zmiennych kryją się pod adresami:
<syntaxhighlight lang="lua">
local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
</syntaxhighlight>
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
== {{Code|p.TworzenieAdresuHtml(strona,...)}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka,
* {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
* {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek);
</syntaxhighlight>
Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta:
<syntaxhighlight lang="lua">
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
== {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml(adres)|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml(strona,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres do przetworzenia,
* {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka,
* {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu.
Przykład takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local function ParametryEncodeURL(a,b,c)
return a..html_modul.ZamianaEncodeTekst(b).."="..html_modul.ZamianaEncodeTekst(c);
end;
local function OperacjeHtml(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryEncodeURL);
return adres;
end;
return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,
-- Funkcja: funkcja_strona;
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
-- Funkcja: funkcja_parametry;
OperacjeHtml,
-- Funkcja: funkcja_naglowek;
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end
);
</syntaxhighlight>
== {{Code|p.ParametryEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ParametryEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
local adres2=html_modul.ParametryEncodeURL(adres,true,
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ParametryZaawansowanyEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml(frame,...)|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryZaawansowanyEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.ParametryZaawansowanyEncodeURL(adres,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodeSpecjalneZnakiHtml(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodeSpecjalneZnakiHtml(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeParametryHtml(parametr,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeParametryHtml(adres,true,
function(strona)
strona=html_modul.EncodeHtml(strona);
return strona;
end,
function(naglowek)
naglowek=html_modul.EncodeHtml(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F";
</syntaxhighlight>
== {{Code|p.EncodeZaawansowanyParametryHtml(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, a przed nim wywoływana jest {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny nagłówek ma być zakodowany,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodePodstawoweHtmlTekstu(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodePodstawoweHtmlTekstu(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Kody do zamienienia
local tekst="#, # i #";
-- Przetwarzanie tekstu
local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&num;" kodu HTML "#" dla znaku "#";
local tekst2,ile,ile2="&num;, &num; i &num;",3,3;
</syntaxhighlight>
== {{Code|p.DecodeHashKoduHtmlTekstu(tekst,ile)}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia,
* {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Zamienione wcześniej kody: tekstu "#, # i #", kolejno na "&num;";
local tekst="&num;, &num; i &num;";
-- Odkodowanie znaków "&num;" w tekście;
local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3);
</syntaxhighlight>
Wynik jest ukryty pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="#, # i #";
</syntaxhighlight>
== {{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "#" i "#" oraz jeden od spacji: " ";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2";
local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony",3,1;
</syntaxhighlight>
== {{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
* {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części,
* {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej,
* {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst);
local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do zakodowania,
* {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true);
-- Adres bezprotokonalny;
local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false);
</syntaxhighlight>
Wynik wartości {{Code|adres12}} i {{Code|adres12}} jest:
<syntaxhighlight lang="lua">
-- Zakodowany adres z protokołem
local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
-- Zakodowany adres bez protokołu
local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr(frame,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
* {{Code|html}} - adres z protokołem strony.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
-- Równoważnie: local adres2=html_modul.UriEncode{html=adres,};
local adres2=html_modul.UriEncode(adres);
</syntaxhighlight>
Wynik jest w zmiennej:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml(frame,...)|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
</syntaxhighlight>
== {{Code|p.EncodeElementyAdresuStrony(elementy_adresu_strony,...)}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - element adresu strony,
* {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry,
* {{Code|z_kodowaniem}} - czy jest włączone kodowanie funkcji po odkodowaniu i pewnych operacjach w tej funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local elementy_adresu_strony="Obsługa?";
local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.AdresProjektuEncodeHtml(frame,...)}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a na końcu {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|z_kodowaniem}} - czy końcowo kodować,
* {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron.
Parametry tablicy ramki tabeli transportu:
* {{Code|html}} - adres do kodowania,
* {{Code|encode}} - czy kodować.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true);
local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit§ion=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1imns3axi9lcztcsheggzntconglwa9
542662
542661
2026-05-11T22:01:22Z
Persino
2851
542662
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych,
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest tekst wywołania: \"#\"";
local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
== {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NAZWASERWISU|link=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},};
local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},};
local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,};
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},};
local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local html2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},};
local tekst2=html_modul.EncodeZnakProloguList(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
</syntaxhighlight>
== {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona?action=edit§ion=2";
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona?action=edit&section=2";
</syntaxhighlight>
== {{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona=Parametry";
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona=Parametry";
</syntaxhighlight>
Użycie w szablonie w postaci parametry nienazwanego (numerowanego):
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany.
== {{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="subst:msg:Szablon:Nazwa_strony";
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},};
local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="subst:msg:Szablon:Nazwa_strony";
</syntaxhighlight>
== {{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}},
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local znak="k";
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,};
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},};
local tekst2=html_modul.KodHTMLZnaku(znak);
-- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",};
local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k";
local tekst3="&#107;";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}}
* {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k"; -->
{{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "&#107;"; -->
{{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8,
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="k{{s";
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,};
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},};
local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak);
-- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",};
local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k{{s";
local tekst3="k&#123;&#123;s";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}}
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k{{s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "k&#123;&#123;s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
* {{Code|id}} - ciąg do przeinaczenia,
* {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,true);
</syntaxhighlight>
Wynikiem działania jest wartość ostatniej zmiennej:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "‎", składający się z trzech bajtów: "â", "€" i "Ž";
local tekst="Oto jest znak: ‎.";
-- Zamiana tego kodu na znak;
tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
-- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty;
tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst);
</syntaxhighlight>
Wynikiem tego kodu jest wartość ukryta pod zmienną:
<syntaxhighlight lang="lua">
local tekst="Oto jest znak: .";
</syntaxhighlight>
== {{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|n=mw.text.encode}}}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy zakodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: \"‎\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
local parametr2=html_modul.EncodeWiki(parametr,false);
local parametr3=html_modul.EncodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości:
<syntaxhighlight lang="lua">
local parametr2="Oto_jest_znak:_""_i_inne_znaki_w_URL:_"https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&action=edit#Obsługa;"";
local parametr3="__Oto jest znak: "" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
</syntaxhighlight>
== {{Code|p.DecodeWiki}} ==
Funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.decode|n=mw.text.decode}}}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy odkodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: "‎" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
local parametr2=html_modul.DecodeWiki(parametr,false);
local parametr3=html_modul.DecodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość:
<syntaxhighlight lang="lua">
local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"";
local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
</syntaxhighlight>
== {{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do sprawdzenia - wymagany,
* {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}},
* {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Pierwszy przykład:
local parametr1="abc?edit=action";
-- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany;
local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false);
-- Drugi przykład:
local parametr2="a%YTbc?edit=action;";
-- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany;
local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false);
</syntaxhighlight>
== {{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do transformacji kodowania,
* {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
{{Hr}}
Przykłady pierwszy - podany tekst już zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="abc___?action=edit&section=21#nagłówek";
-- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&", czyli "&" został zamieniony na "&";
local parametr2="abc_?action=edit&section=21#nagłówek";
</syntaxhighlight>
{{Hr}}
Przykłady drugi - podany tekst jeszcze nie zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="a%YTbc___?action=edit;";
-- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "=";
local parametr2="a%25YTbc___%3Faction%3Dedit;";
</syntaxhighlight>
== {{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do odkodowania,
* {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}},
* {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków;
local parametr="a%25YTbc___%3Faction%3Dedit&section=23;";
local parametr2=html_modul.DecodeHtml(parametr,true);
</syntaxhighlight>
Wynik funkcji jest ukryty pod adresem:
<syntaxhighlight lang="lua">
-- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki;
local parametr2="a%YTbc ?action=edit§ion=23;";
</syntaxhighlight>
== {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>";
local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst);
</syntaxhighlight>
Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz;
local tekst2="<span id=\"Znaki<>\"\">To jest zawartość</span>";
</syntaxhighlight>
== {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\"nazwa\"\">Zawartość znacznika</a>";
local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst);
</syntaxhighlight>
Otrzymana zawartość jest pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że kody odpowiednie HTML, tzn.: "<", ">" i "&" zostały zamienione na odpowwiednie znaki;
local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>";
</syntaxhighlight>
== {{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu);
local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość;
local naglowek="Nagłówek strony";
</syntaxhighlight>
== {{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu);
local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne;
local parametry="action=edit§ion=2";
</syntaxhighlight>
== {{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu);
local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna";
</syntaxhighlight>
== {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
-- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true);
local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="Strona główna";
</syntaxhighlight>
== {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu);
local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość pełnego adresu strony poprawiona jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony,
* {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html"):
local url="//pl.wikibooks.org/wiki/Strona_artykułu";
local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,};
</syntaxhighlight>
Wartości zmiennych kryją się pod:
<syntaxhighlight lang="lua">
-- Widzimy, że nazwa serwera jest bez prawych ukośników;
local serwer="pl.wikibooks.org";
-- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi;
local nazwa="wiki/Strona_artykułu";
-- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu";
</syntaxhighlight>
== {{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local mail="użytkownik@skrzynka.org";
-- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail);
local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,};
---
local url="https://pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url);
local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="//pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url);
local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url);
local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,};
</syntaxhighlight>
Wyniki otrzymane z powyższych przykładów są:
<syntaxhighlight lang="lua">
local adres1,protokol1,sposob1="//skrzynka.org","mail",1;
local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2;
local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3;
local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1;
</syntaxhighlight>
== {{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi;
local tekst="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
-- Wywołanie funkcji odkodujący kody HTML;
local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst);
</syntaxhighlight>
Otrzymany wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Widzimy, że tekst został zdekodowany ze znaków HTML;
local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local tekst2=html_modul.ZamianaEncodeTekst(tekst);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}:
<syntaxhighlight lang="lua">
local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru;
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
-- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku;
local wzor="[^/%?%=&:%#]+";
-- Wywołanie funkcji kodującej;
local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2:}}
<syntaxhighlight lang="lua">
-- Zakodowało jeszcze więcej niż na samym początku było zakodowane;
local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.StronaParametryIdentyfikacjaAdresuHtml(adres)}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do potrzelenia na trzy części.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek";
local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres);
</syntaxhighlight>
Otrzymane wartości tych zmiennych kryją się pod adresami:
<syntaxhighlight lang="lua">
local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
</syntaxhighlight>
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
== {{Code|p.TworzenieAdresuHtml(strona,...)}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka,
* {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
* {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek);
</syntaxhighlight>
Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta:
<syntaxhighlight lang="lua">
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
== {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml(adres)|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml(strona,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres do przetworzenia,
* {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka,
* {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu.
Przykład takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local function ParametryEncodeURL(a,b,c)
return a..html_modul.ZamianaEncodeTekst(b).."="..html_modul.ZamianaEncodeTekst(c);
end;
local function OperacjeHtml(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryEncodeURL);
return adres;
end;
return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,
-- Funkcja: funkcja_strona;
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
-- Funkcja: funkcja_parametry;
OperacjeHtml,
-- Funkcja: funkcja_naglowek;
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end
);
</syntaxhighlight>
== {{Code|p.ParametryEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ParametryEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
local adres2=html_modul.ParametryEncodeURL(adres,true,
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ParametryZaawansowanyEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryZaawansowanyEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.ParametryZaawansowanyEncodeURL(adres,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodeSpecjalneZnakiHtml(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodeSpecjalneZnakiHtml(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeParametryHtml(parametr,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeParametryHtml(adres,true,
function(strona)
strona=html_modul.EncodeHtml(strona);
return strona;
end,
function(naglowek)
naglowek=html_modul.EncodeHtml(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F";
</syntaxhighlight>
== {{Code|p.EncodeZaawansowanyParametryHtml(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, a przed nim wywoływana jest {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny nagłówek ma być zakodowany,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodePodstawoweHtmlTekstu(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodePodstawoweHtmlTekstu(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Kody do zamienienia
local tekst="#, # i #";
-- Przetwarzanie tekstu
local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&num;" kodu HTML "#" dla znaku "#";
local tekst2,ile,ile2="&num;, &num; i &num;",3,3;
</syntaxhighlight>
== {{Code|p.DecodeHashKoduHtmlTekstu(tekst,ile)}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia,
* {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Zamienione wcześniej kody: tekstu "#, # i #", kolejno na "&num;";
local tekst="&num;, &num; i &num;";
-- Odkodowanie znaków "&num;" w tekście;
local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3);
</syntaxhighlight>
Wynik jest ukryty pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="#, # i #";
</syntaxhighlight>
== {{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "#" i "#" oraz jeden od spacji: " ";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2";
local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony",3,1;
</syntaxhighlight>
== {{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
* {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części,
* {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej,
* {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst);
local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do zakodowania,
* {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true);
-- Adres bezprotokonalny;
local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false);
</syntaxhighlight>
Wynik wartości {{Code|adres12}} i {{Code|adres12}} jest:
<syntaxhighlight lang="lua">
-- Zakodowany adres z protokołem
local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
-- Zakodowany adres bez protokołu
local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
* {{Code|html}} - adres z protokołem strony.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
-- Równoważnie: local adres2=html_modul.UriEncode{html=adres,};
local adres2=html_modul.UriEncode(adres);
</syntaxhighlight>
Wynik jest w zmiennej:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
</syntaxhighlight>
== {{Code|p.EncodeElementyAdresuStrony(elementy_adresu_strony,...)}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - element adresu strony,
* {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry,
* {{Code|z_kodowaniem}} - czy jest włączone kodowanie funkcji po odkodowaniu i pewnych operacjach w tej funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local elementy_adresu_strony="Obsługa?";
local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a na końcu {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|z_kodowaniem}} - czy końcowo kodować,
* {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron.
Parametry tablicy ramki tabeli transportu:
* {{Code|html}} - adres do kodowania,
* {{Code|encode}} - czy kodować.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true);
local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit§ion=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
d89qiozcgwltyo5308frdnbas9lx6tv
542694
542662
2026-05-12T10:53:17Z
Persino
2851
542694
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych,
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest tekst wywołania: \"#\"";
local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
== {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NAZWASERWISU|link=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},};
local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},};
local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,};
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},};
local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local html2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},};
local tekst2=html_modul.EncodeZnakProloguList(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
</syntaxhighlight>
== {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona?action=edit§ion=2";
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona?action=edit&section=2";
</syntaxhighlight>
== {{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona=Parametry";
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona=Parametry";
</syntaxhighlight>
Użycie w szablonie w postaci parametry nienazwanego (numerowanego):
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany.
== {{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="subst:msg:Szablon:Nazwa_strony";
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},};
local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="subst:msg:Szablon:Nazwa_strony";
</syntaxhighlight>
== {{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}},
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local znak="k";
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,};
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},};
local tekst2=html_modul.KodHTMLZnaku(znak);
-- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",};
local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k";
local tekst3="&#107;";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}}
* {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k"; -->
{{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "&#107;"; -->
{{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8,
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="k{{s";
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,};
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},};
local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak);
-- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",};
local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k{{s";
local tekst3="k&#123;&#123;s";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}}
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k{{s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "k&#123;&#123;s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
* {{Code|id}} - ciąg do przeinaczenia,
* {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,true);
</syntaxhighlight>
Wynikiem działania jest wartość ostatniej zmiennej:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "‎", składający się z trzech bajtów: "â", "€" i "Ž";
local tekst="Oto jest znak: ‎.";
-- Zamiana tego kodu na znak;
tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
-- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty;
tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst);
</syntaxhighlight>
Wynikiem tego kodu jest wartość ukryta pod zmienną:
<syntaxhighlight lang="lua">
local tekst="Oto jest znak: .";
</syntaxhighlight>
== {{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|n=mw.text.encode}}}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy zakodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: \"‎\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
local parametr2=html_modul.EncodeWiki(parametr,false);
local parametr3=html_modul.EncodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości:
<syntaxhighlight lang="lua">
local parametr2="Oto_jest_znak:_""_i_inne_znaki_w_URL:_"https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&action=edit#Obsługa;"";
local parametr3="__Oto jest znak: "" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
</syntaxhighlight>
== {{Code|p.DecodeWiki}} ==
Funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.decode|n=mw.text.decode}}}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy odkodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: "‎" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
local parametr2=html_modul.DecodeWiki(parametr,false);
local parametr3=html_modul.DecodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość:
<syntaxhighlight lang="lua">
local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"";
local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
</syntaxhighlight>
== {{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do sprawdzenia - wymagany,
* {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}},
* {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Pierwszy przykład:
local parametr1="abc?edit=action";
-- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany;
local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false);
-- Drugi przykład:
local parametr2="a%YTbc?edit=action;";
-- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany;
local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false);
</syntaxhighlight>
== {{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do transformacji kodowania,
* {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
{{Hr}}
Przykłady pierwszy - podany tekst już zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="abc___?action=edit&section=21#nagłówek";
-- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&", czyli "&" został zamieniony na "&";
local parametr2="abc_?action=edit&section=21#nagłówek";
</syntaxhighlight>
{{Hr}}
Przykłady drugi - podany tekst jeszcze nie zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="a%YTbc___?action=edit;";
-- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "=";
local parametr2="a%25YTbc___%3Faction%3Dedit;";
</syntaxhighlight>
== {{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do odkodowania,
* {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}},
* {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków;
local parametr="a%25YTbc___%3Faction%3Dedit&section=23;";
local parametr2=html_modul.DecodeHtml(parametr,true);
</syntaxhighlight>
Wynik funkcji jest ukryty pod adresem:
<syntaxhighlight lang="lua">
-- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki;
local parametr2="a%YTbc ?action=edit§ion=23;";
</syntaxhighlight>
== {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>";
local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst);
</syntaxhighlight>
Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz;
local tekst2="<span id=\"Znaki<>\"\">To jest zawartość</span>";
</syntaxhighlight>
== {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\"nazwa\"\">Zawartość znacznika</a>";
local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst);
</syntaxhighlight>
Otrzymana zawartość jest pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że kody odpowiednie HTML, tzn.: "<", ">" i "&" zostały zamienione na odpowwiednie znaki;
local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>";
</syntaxhighlight>
== {{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu);
local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość;
local naglowek="Nagłówek strony";
</syntaxhighlight>
== {{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu);
local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne;
local parametry="action=edit§ion=2";
</syntaxhighlight>
== {{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu);
local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna";
</syntaxhighlight>
== {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
-- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true);
local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="Strona główna";
</syntaxhighlight>
== {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu);
local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość pełnego adresu strony poprawiona jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony,
* {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html"):
local url="//pl.wikibooks.org/wiki/Strona_artykułu";
local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,};
</syntaxhighlight>
Wartości zmiennych kryją się pod:
<syntaxhighlight lang="lua">
-- Widzimy, że nazwa serwera jest bez prawych ukośników;
local serwer="pl.wikibooks.org";
-- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi;
local nazwa="wiki/Strona_artykułu";
-- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu";
</syntaxhighlight>
== {{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local mail="użytkownik@skrzynka.org";
-- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail);
local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,};
---
local url="https://pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url);
local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="//pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url);
local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url);
local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,};
</syntaxhighlight>
Wyniki otrzymane z powyższych przykładów są:
<syntaxhighlight lang="lua">
local adres1,protokol1,sposob1="//skrzynka.org","mail",1;
local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2;
local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3;
local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1;
</syntaxhighlight>
== {{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi;
local tekst="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
-- Wywołanie funkcji odkodujący kody HTML;
local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst);
</syntaxhighlight>
Otrzymany wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Widzimy, że tekst został zdekodowany ze znaków HTML;
local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local tekst2=html_modul.ZamianaEncodeTekst(tekst);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}:
<syntaxhighlight lang="lua">
local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru;
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
-- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku;
local wzor="[^/%?%=&:%#]+";
-- Wywołanie funkcji kodującej;
local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2:}}
<syntaxhighlight lang="lua">
-- Zakodowało jeszcze więcej niż na samym początku było zakodowane;
local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.StronaParametryIdentyfikacjaAdresuHtml(adres)}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do potrzelenia na trzy części.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek";
local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres);
</syntaxhighlight>
Otrzymane wartości tych zmiennych kryją się pod adresami:
<syntaxhighlight lang="lua">
local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
</syntaxhighlight>
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
== {{Code|p.TworzenieAdresuHtml(strona,...)}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka,
* {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
* {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek);
</syntaxhighlight>
Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta:
<syntaxhighlight lang="lua">
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
== {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml(adres)|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml(strona,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres do przetworzenia,
* {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka,
* {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu.
Przykład takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local function ParametryEncodeURL(a,b,c)
return a..html_modul.ZamianaEncodeTekst(b).."="..html_modul.ZamianaEncodeTekst(c);
end;
local function OperacjeHtml(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryEncodeURL);
return adres;
end;
return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,
-- Funkcja: funkcja_strona;
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
-- Funkcja: funkcja_parametry;
OperacjeHtml,
-- Funkcja: funkcja_naglowek;
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end
);
</syntaxhighlight>
== {{Code|p.ParametryEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ParametryEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
local adres2=html_modul.ParametryEncodeURL(adres,true,
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ParametryZaawansowanyEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryZaawansowanyEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.ParametryZaawansowanyEncodeURL(adres,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodeSpecjalneZnakiHtml(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodeSpecjalneZnakiHtml(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeParametryHtml(parametr,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeParametryHtml(adres,true,
function(strona)
strona=html_modul.EncodeHtml(strona);
return strona;
end,
function(naglowek)
naglowek=html_modul.EncodeHtml(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F";
</syntaxhighlight>
== {{Code|p.EncodeZaawansowanyParametryHtml(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, a przed nim wywoływana jest {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny nagłówek ma być zakodowany,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodePodstawoweHtmlTekstu(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodePodstawoweHtmlTekstu(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Kody do zamienienia
local tekst="#, # i #";
-- Przetwarzanie tekstu
local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&num;" kodu HTML "#" dla znaku "#";
local tekst2,ile,ile2="&num;, &num; i &num;",3,3;
</syntaxhighlight>
== {{Code|p.DecodeHashKoduHtmlTekstu(tekst,ile)}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia,
* {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Zamienione wcześniej kody: tekstu "#, # i #", kolejno na "&num;";
local tekst="&num;, &num; i &num;";
-- Odkodowanie znaków "&num;" w tekście;
local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3);
</syntaxhighlight>
Wynik jest ukryty pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="#, # i #";
</syntaxhighlight>
== {{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "#" i "#" oraz jeden od spacji: " ";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2";
local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony",3,1;
</syntaxhighlight>
== {{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
* {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części,
* {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej,
* {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst);
local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do zakodowania,
* {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true);
-- Adres bezprotokonalny;
local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false);
</syntaxhighlight>
Wynik wartości {{Code|adres12}} i {{Code|adres12}} jest:
<syntaxhighlight lang="lua">
-- Zakodowany adres z protokołem
local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
-- Zakodowany adres bez protokołu
local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
* {{Code|html}} - adres z protokołem strony.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
-- Równoważnie: local adres2=html_modul.UriEncode{html=adres,};
local adres2=html_modul.UriEncode(adres);
</syntaxhighlight>
Wynik jest w zmiennej:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu(tekst,ile)|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
</syntaxhighlight>
== {{Code|p.EncodeElementyAdresuStrony(elementy_adresu_strony,...)}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - element adresu strony,
* {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry,
* {{Code|z_kodowaniem}} - czy jest włączone kodowanie funkcji po odkodowaniu i pewnych operacjach w tej funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local elementy_adresu_strony="Obsługa?";
local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a na końcu {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|z_kodowaniem}} - czy końcowo kodować,
* {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron.
Parametry tablicy ramki tabeli transportu:
* {{Code|html}} - adres do kodowania,
* {{Code|encode}} - czy kodować.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true);
local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit§ion=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
lrxc4udvh74e5fjd1wn34pntuvqy2pr
542695
542694
2026-05-12T10:56:06Z
Persino
2851
542695
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych,
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest tekst wywołania: \"#\"";
local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
== {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NAZWASERWISU|link=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},};
local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},};
local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,};
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},};
local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local html2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},};
local tekst2=html_modul.EncodeZnakProloguList(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
</syntaxhighlight>
== {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona?action=edit§ion=2";
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona?action=edit&section=2";
</syntaxhighlight>
== {{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona=Parametry";
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona=Parametry";
</syntaxhighlight>
Użycie w szablonie w postaci parametry nienazwanego (numerowanego):
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany.
== {{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="subst:msg:Szablon:Nazwa_strony";
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},};
local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="subst:msg:Szablon:Nazwa_strony";
</syntaxhighlight>
== {{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}},
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local znak="k";
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,};
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},};
local tekst2=html_modul.KodHTMLZnaku(znak);
-- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",};
local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k";
local tekst3="&#107;";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}}
* {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k"; -->
{{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "&#107;"; -->
{{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8,
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="k{{s";
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,};
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},};
local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak);
-- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",};
local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k{{s";
local tekst3="k&#123;&#123;s";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}}
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k{{s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "k&#123;&#123;s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
* {{Code|id}} - ciąg do przeinaczenia,
* {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,true);
</syntaxhighlight>
Wynikiem działania jest wartość ostatniej zmiennej:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "‎", składający się z trzech bajtów: "â", "€" i "Ž";
local tekst="Oto jest znak: ‎.";
-- Zamiana tego kodu na znak;
tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
-- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty;
tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst);
</syntaxhighlight>
Wynikiem tego kodu jest wartość ukryta pod zmienną:
<syntaxhighlight lang="lua">
local tekst="Oto jest znak: .";
</syntaxhighlight>
== {{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|n=mw.text.encode}}}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy zakodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: \"‎\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
local parametr2=html_modul.EncodeWiki(parametr,false);
local parametr3=html_modul.EncodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości:
<syntaxhighlight lang="lua">
local parametr2="Oto_jest_znak:_""_i_inne_znaki_w_URL:_"https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&action=edit#Obsługa;"";
local parametr3="__Oto jest znak: "" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
</syntaxhighlight>
== {{Code|p.DecodeWiki}} ==
Funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.decode|n=mw.text.decode}}}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy odkodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: "‎" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
local parametr2=html_modul.DecodeWiki(parametr,false);
local parametr3=html_modul.DecodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość:
<syntaxhighlight lang="lua">
local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"";
local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
</syntaxhighlight>
== {{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do sprawdzenia - wymagany,
* {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}},
* {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Pierwszy przykład:
local parametr1="abc?edit=action";
-- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany;
local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false);
-- Drugi przykład:
local parametr2="a%YTbc?edit=action;";
-- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany;
local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false);
</syntaxhighlight>
== {{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do transformacji kodowania,
* {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
{{Hr}}
Przykłady pierwszy - podany tekst już zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="abc___?action=edit&section=21#nagłówek";
-- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&", czyli "&" został zamieniony na "&";
local parametr2="abc_?action=edit&section=21#nagłówek";
</syntaxhighlight>
{{Hr}}
Przykłady drugi - podany tekst jeszcze nie zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="a%YTbc___?action=edit;";
-- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "=";
local parametr2="a%25YTbc___%3Faction%3Dedit;";
</syntaxhighlight>
== {{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do odkodowania,
* {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}},
* {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków;
local parametr="a%25YTbc___%3Faction%3Dedit&section=23;";
local parametr2=html_modul.DecodeHtml(parametr,true);
</syntaxhighlight>
Wynik funkcji jest ukryty pod adresem:
<syntaxhighlight lang="lua">
-- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki;
local parametr2="a%YTbc ?action=edit§ion=23;";
</syntaxhighlight>
== {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>";
local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst);
</syntaxhighlight>
Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz;
local tekst2="<span id=\"Znaki<>\"\">To jest zawartość</span>";
</syntaxhighlight>
== {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\"nazwa\"\">Zawartość znacznika</a>";
local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst);
</syntaxhighlight>
Otrzymana zawartość jest pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że kody odpowiednie HTML, tzn.: "<", ">" i "&" zostały zamienione na odpowwiednie znaki;
local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>";
</syntaxhighlight>
== {{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu);
local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość;
local naglowek="Nagłówek strony";
</syntaxhighlight>
== {{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu);
local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne;
local parametry="action=edit§ion=2";
</syntaxhighlight>
== {{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu);
local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna";
</syntaxhighlight>
== {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
-- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true);
local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="Strona główna";
</syntaxhighlight>
== {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu);
local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość pełnego adresu strony poprawiona jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony,
* {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html"):
local url="//pl.wikibooks.org/wiki/Strona_artykułu";
local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,};
</syntaxhighlight>
Wartości zmiennych kryją się pod:
<syntaxhighlight lang="lua">
-- Widzimy, że nazwa serwera jest bez prawych ukośników;
local serwer="pl.wikibooks.org";
-- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi;
local nazwa="wiki/Strona_artykułu";
-- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu";
</syntaxhighlight>
== {{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local mail="użytkownik@skrzynka.org";
-- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail);
local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,};
---
local url="https://pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url);
local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="//pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url);
local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url);
local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,};
</syntaxhighlight>
Wyniki otrzymane z powyższych przykładów są:
<syntaxhighlight lang="lua">
local adres1,protokol1,sposob1="//skrzynka.org","mail",1;
local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2;
local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3;
local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1;
</syntaxhighlight>
== {{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi;
local tekst="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
-- Wywołanie funkcji odkodujący kody HTML;
local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst);
</syntaxhighlight>
Otrzymany wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Widzimy, że tekst został zdekodowany ze znaków HTML;
local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local tekst2=html_modul.ZamianaEncodeTekst(tekst);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}:
<syntaxhighlight lang="lua">
local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru;
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
-- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku;
local wzor="[^/%?%=&:%#]+";
-- Wywołanie funkcji kodującej;
local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2:}}
<syntaxhighlight lang="lua">
-- Zakodowało jeszcze więcej niż na samym początku było zakodowane;
local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.StronaParametryIdentyfikacjaAdresuHtml(adres)}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do potrzelenia na trzy części.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek";
local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres);
</syntaxhighlight>
Otrzymane wartości tych zmiennych kryją się pod adresami:
<syntaxhighlight lang="lua">
local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
</syntaxhighlight>
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
== {{Code|p.TworzenieAdresuHtml(strona,...)}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka,
* {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
* {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek);
</syntaxhighlight>
Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta:
<syntaxhighlight lang="lua">
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
== {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml(adres)|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml(strona,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres do przetworzenia,
* {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka,
* {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu.
Przykład takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local function ParametryEncodeURL(a,b,c)
return a..html_modul.ZamianaEncodeTekst(b).."="..html_modul.ZamianaEncodeTekst(c);
end;
local function OperacjeHtml(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryEncodeURL);
return adres;
end;
return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,
-- Funkcja: funkcja_strona;
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
-- Funkcja: funkcja_parametry;
OperacjeHtml,
-- Funkcja: funkcja_naglowek;
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end
);
</syntaxhighlight>
== {{Code|p.ParametryEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ParametryEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
local adres2=html_modul.ParametryEncodeURL(adres,true,
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ParametryZaawansowanyEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryZaawansowanyEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.ParametryZaawansowanyEncodeURL(adres,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodeSpecjalneZnakiHtml(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodeSpecjalneZnakiHtml(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeParametryHtml(parametr,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeParametryHtml(adres,true,
function(strona)
strona=html_modul.EncodeHtml(strona);
return strona;
end,
function(naglowek)
naglowek=html_modul.EncodeHtml(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F";
</syntaxhighlight>
== {{Code|p.EncodeZaawansowanyParametryHtml(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, a przed nim wywoływana jest {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny nagłówek ma być zakodowany,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodePodstawoweHtmlTekstu(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodePodstawoweHtmlTekstu(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Kody do zamienienia
local tekst="#, # i #";
-- Przetwarzanie tekstu
local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&num;" kodu HTML "#" dla znaku "#";
local tekst2,ile,ile2="&num;, &num; i &num;",3,3;
</syntaxhighlight>
== {{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia,
* {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Zamienione wcześniej kody: tekstu "#, # i #", kolejno na "&num;";
local tekst="&num;, &num; i &num;";
-- Odkodowanie znaków "&num;" w tekście;
local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3);
</syntaxhighlight>
Wynik jest ukryty pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="#, # i #";
</syntaxhighlight>
== {{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "#" i "#" oraz jeden od spacji: " ";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2";
local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony",3,1;
</syntaxhighlight>
== {{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
* {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części,
* {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej,
* {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst);
local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do zakodowania,
* {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true);
-- Adres bezprotokonalny;
local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false);
</syntaxhighlight>
Wynik wartości {{Code|adres12}} i {{Code|adres12}} jest:
<syntaxhighlight lang="lua">
-- Zakodowany adres z protokołem
local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
-- Zakodowany adres bez protokołu
local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
* {{Code|html}} - adres z protokołem strony.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
-- Równoważnie: local adres2=html_modul.UriEncode{html=adres,};
local adres2=html_modul.UriEncode(adres);
</syntaxhighlight>
Wynik jest w zmiennej:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
</syntaxhighlight>
== {{Code|p.EncodeElementyAdresuStrony(elementy_adresu_strony,...)}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - element adresu strony,
* {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry,
* {{Code|z_kodowaniem}} - czy jest włączone kodowanie funkcji po odkodowaniu i pewnych operacjach w tej funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local elementy_adresu_strony="Obsługa?";
local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a na końcu {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|z_kodowaniem}} - czy końcowo kodować,
* {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron.
Parametry tablicy ramki tabeli transportu:
* {{Code|html}} - adres do kodowania,
* {{Code|encode}} - czy kodować.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true);
local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit§ion=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nm2ui3mji1z4ygpezzxx4qqqesepfux
542696
542695
2026-05-12T10:57:09Z
Persino
2851
542696
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych,
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest tekst wywołania: \"#\"";
local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
== {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NAZWASERWISU|link=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},};
local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},};
local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,};
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},};
local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local html2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},};
local tekst2=html_modul.EncodeZnakProloguList(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
</syntaxhighlight>
== {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona?action=edit§ion=2";
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona?action=edit&section=2";
</syntaxhighlight>
== {{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona=Parametry";
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona=Parametry";
</syntaxhighlight>
Użycie w szablonie w postaci parametry nienazwanego (numerowanego):
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany.
== {{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="subst:msg:Szablon:Nazwa_strony";
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},};
local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="subst:msg:Szablon:Nazwa_strony";
</syntaxhighlight>
== {{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}},
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local znak="k";
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,};
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},};
local tekst2=html_modul.KodHTMLZnaku(znak);
-- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",};
local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k";
local tekst3="&#107;";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}}
* {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k"; -->
{{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "&#107;"; -->
{{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8,
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="k{{s";
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,};
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},};
local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak);
-- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",};
local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k{{s";
local tekst3="k&#123;&#123;s";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}}
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k{{s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "k&#123;&#123;s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
* {{Code|id}} - ciąg do przeinaczenia,
* {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,true);
</syntaxhighlight>
Wynikiem działania jest wartość ostatniej zmiennej:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "‎", składający się z trzech bajtów: "â", "€" i "Ž";
local tekst="Oto jest znak: ‎.";
-- Zamiana tego kodu na znak;
tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
-- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty;
tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst);
</syntaxhighlight>
Wynikiem tego kodu jest wartość ukryta pod zmienną:
<syntaxhighlight lang="lua">
local tekst="Oto jest znak: .";
</syntaxhighlight>
== {{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|n=mw.text.encode}}}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy zakodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: \"‎\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
local parametr2=html_modul.EncodeWiki(parametr,false);
local parametr3=html_modul.EncodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości:
<syntaxhighlight lang="lua">
local parametr2="Oto_jest_znak:_""_i_inne_znaki_w_URL:_"https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&action=edit#Obsługa;"";
local parametr3="__Oto jest znak: "" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
</syntaxhighlight>
== {{Code|p.DecodeWiki}} ==
Funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.decode|n=mw.text.decode}}}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy odkodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: "‎" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
local parametr2=html_modul.DecodeWiki(parametr,false);
local parametr3=html_modul.DecodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość:
<syntaxhighlight lang="lua">
local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"";
local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
</syntaxhighlight>
== {{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do sprawdzenia - wymagany,
* {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}},
* {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Pierwszy przykład:
local parametr1="abc?edit=action";
-- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany;
local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false);
-- Drugi przykład:
local parametr2="a%YTbc?edit=action;";
-- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany;
local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false);
</syntaxhighlight>
== {{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do transformacji kodowania,
* {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
{{Hr}}
Przykłady pierwszy - podany tekst już zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="abc___?action=edit&section=21#nagłówek";
-- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&", czyli "&" został zamieniony na "&";
local parametr2="abc_?action=edit&section=21#nagłówek";
</syntaxhighlight>
{{Hr}}
Przykłady drugi - podany tekst jeszcze nie zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="a%YTbc___?action=edit;";
-- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "=";
local parametr2="a%25YTbc___%3Faction%3Dedit;";
</syntaxhighlight>
== {{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do odkodowania,
* {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}},
* {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków;
local parametr="a%25YTbc___%3Faction%3Dedit&section=23;";
local parametr2=html_modul.DecodeHtml(parametr,true);
</syntaxhighlight>
Wynik funkcji jest ukryty pod adresem:
<syntaxhighlight lang="lua">
-- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki;
local parametr2="a%YTbc ?action=edit§ion=23;";
</syntaxhighlight>
== {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>";
local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst);
</syntaxhighlight>
Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz;
local tekst2="<span id=\"Znaki<>\"\">To jest zawartość</span>";
</syntaxhighlight>
== {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\"nazwa\"\">Zawartość znacznika</a>";
local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst);
</syntaxhighlight>
Otrzymana zawartość jest pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że kody odpowiednie HTML, tzn.: "<", ">" i "&" zostały zamienione na odpowwiednie znaki;
local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>";
</syntaxhighlight>
== {{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu);
local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość;
local naglowek="Nagłówek strony";
</syntaxhighlight>
== {{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu);
local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne;
local parametry="action=edit§ion=2";
</syntaxhighlight>
== {{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu);
local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna";
</syntaxhighlight>
== {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
-- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true);
local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="Strona główna";
</syntaxhighlight>
== {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu);
local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość pełnego adresu strony poprawiona jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony,
* {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html"):
local url="//pl.wikibooks.org/wiki/Strona_artykułu";
local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,};
</syntaxhighlight>
Wartości zmiennych kryją się pod:
<syntaxhighlight lang="lua">
-- Widzimy, że nazwa serwera jest bez prawych ukośników;
local serwer="pl.wikibooks.org";
-- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi;
local nazwa="wiki/Strona_artykułu";
-- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu";
</syntaxhighlight>
== {{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local mail="użytkownik@skrzynka.org";
-- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail);
local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,};
---
local url="https://pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url);
local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="//pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url);
local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url);
local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,};
</syntaxhighlight>
Wyniki otrzymane z powyższych przykładów są:
<syntaxhighlight lang="lua">
local adres1,protokol1,sposob1="//skrzynka.org","mail",1;
local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2;
local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3;
local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1;
</syntaxhighlight>
== {{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi;
local tekst="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
-- Wywołanie funkcji odkodujący kody HTML;
local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst);
</syntaxhighlight>
Otrzymany wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Widzimy, że tekst został zdekodowany ze znaków HTML;
local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local tekst2=html_modul.ZamianaEncodeTekst(tekst);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}:
<syntaxhighlight lang="lua">
local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru;
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
-- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku;
local wzor="[^/%?%=&:%#]+";
-- Wywołanie funkcji kodującej;
local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2:}}
<syntaxhighlight lang="lua">
-- Zakodowało jeszcze więcej niż na samym początku było zakodowane;
local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do potrzelenia na trzy części.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek";
local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres);
</syntaxhighlight>
Otrzymane wartości tych zmiennych kryją się pod adresami:
<syntaxhighlight lang="lua">
local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
</syntaxhighlight>
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
== {{Code|p.TworzenieAdresuHtml(strona,...)}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka,
* {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
* {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek);
</syntaxhighlight>
Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta:
<syntaxhighlight lang="lua">
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
== {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml(strona,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres do przetworzenia,
* {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka,
* {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu.
Przykład takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local function ParametryEncodeURL(a,b,c)
return a..html_modul.ZamianaEncodeTekst(b).."="..html_modul.ZamianaEncodeTekst(c);
end;
local function OperacjeHtml(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryEncodeURL);
return adres;
end;
return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,
-- Funkcja: funkcja_strona;
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
-- Funkcja: funkcja_parametry;
OperacjeHtml,
-- Funkcja: funkcja_naglowek;
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end
);
</syntaxhighlight>
== {{Code|p.ParametryEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ParametryEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
local adres2=html_modul.ParametryEncodeURL(adres,true,
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ParametryZaawansowanyEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryZaawansowanyEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.ParametryZaawansowanyEncodeURL(adres,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodeSpecjalneZnakiHtml(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodeSpecjalneZnakiHtml(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeParametryHtml(parametr,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeParametryHtml(adres,true,
function(strona)
strona=html_modul.EncodeHtml(strona);
return strona;
end,
function(naglowek)
naglowek=html_modul.EncodeHtml(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F";
</syntaxhighlight>
== {{Code|p.EncodeZaawansowanyParametryHtml(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, a przed nim wywoływana jest {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny nagłówek ma być zakodowany,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodePodstawoweHtmlTekstu(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodePodstawoweHtmlTekstu(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Kody do zamienienia
local tekst="#, # i #";
-- Przetwarzanie tekstu
local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&num;" kodu HTML "#" dla znaku "#";
local tekst2,ile,ile2="&num;, &num; i &num;",3,3;
</syntaxhighlight>
== {{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia,
* {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Zamienione wcześniej kody: tekstu "#, # i #", kolejno na "&num;";
local tekst="&num;, &num; i &num;";
-- Odkodowanie znaków "&num;" w tekście;
local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3);
</syntaxhighlight>
Wynik jest ukryty pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="#, # i #";
</syntaxhighlight>
== {{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "#" i "#" oraz jeden od spacji: " ";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2";
local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony",3,1;
</syntaxhighlight>
== {{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
* {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części,
* {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej,
* {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst);
local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do zakodowania,
* {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true);
-- Adres bezprotokonalny;
local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false);
</syntaxhighlight>
Wynik wartości {{Code|adres12}} i {{Code|adres12}} jest:
<syntaxhighlight lang="lua">
-- Zakodowany adres z protokołem
local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
-- Zakodowany adres bez protokołu
local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
* {{Code|html}} - adres z protokołem strony.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
-- Równoważnie: local adres2=html_modul.UriEncode{html=adres,};
local adres2=html_modul.UriEncode(adres);
</syntaxhighlight>
Wynik jest w zmiennej:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
</syntaxhighlight>
== {{Code|p.EncodeElementyAdresuStrony(elementy_adresu_strony,...)}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - element adresu strony,
* {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry,
* {{Code|z_kodowaniem}} - czy jest włączone kodowanie funkcji po odkodowaniu i pewnych operacjach w tej funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local elementy_adresu_strony="Obsługa?";
local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a na końcu {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|z_kodowaniem}} - czy końcowo kodować,
* {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron.
Parametry tablicy ramki tabeli transportu:
* {{Code|html}} - adres do kodowania,
* {{Code|encode}} - czy kodować.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true);
local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit§ion=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cqmbk5f7vu4luz1ga9ecc3bs6ovpxly
542697
542696
2026-05-12T10:59:25Z
Persino
2851
542697
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych,
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest tekst wywołania: \"#\"";
local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
== {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NAZWASERWISU|link=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},};
local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},};
local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,};
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},};
local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local html2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},};
local tekst2=html_modul.EncodeZnakProloguList(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
</syntaxhighlight>
== {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona?action=edit§ion=2";
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona?action=edit&section=2";
</syntaxhighlight>
== {{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona=Parametry";
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona=Parametry";
</syntaxhighlight>
Użycie w szablonie w postaci parametry nienazwanego (numerowanego):
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany.
== {{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="subst:msg:Szablon:Nazwa_strony";
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},};
local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="subst:msg:Szablon:Nazwa_strony";
</syntaxhighlight>
== {{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}},
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local znak="k";
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,};
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},};
local tekst2=html_modul.KodHTMLZnaku(znak);
-- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",};
local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k";
local tekst3="&#107;";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}}
* {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k"; -->
{{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "&#107;"; -->
{{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8,
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="k{{s";
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,};
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},};
local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak);
-- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",};
local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k{{s";
local tekst3="k&#123;&#123;s";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}}
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k{{s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "k&#123;&#123;s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
* {{Code|id}} - ciąg do przeinaczenia,
* {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,true);
</syntaxhighlight>
Wynikiem działania jest wartość ostatniej zmiennej:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "‎", składający się z trzech bajtów: "â", "€" i "Ž";
local tekst="Oto jest znak: ‎.";
-- Zamiana tego kodu na znak;
tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
-- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty;
tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst);
</syntaxhighlight>
Wynikiem tego kodu jest wartość ukryta pod zmienną:
<syntaxhighlight lang="lua">
local tekst="Oto jest znak: .";
</syntaxhighlight>
== {{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|n=mw.text.encode}}}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy zakodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: \"‎\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
local parametr2=html_modul.EncodeWiki(parametr,false);
local parametr3=html_modul.EncodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości:
<syntaxhighlight lang="lua">
local parametr2="Oto_jest_znak:_""_i_inne_znaki_w_URL:_"https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&action=edit#Obsługa;"";
local parametr3="__Oto jest znak: "" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
</syntaxhighlight>
== {{Code|p.DecodeWiki}} ==
Funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.decode|n=mw.text.decode}}}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy odkodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: "‎" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
local parametr2=html_modul.DecodeWiki(parametr,false);
local parametr3=html_modul.DecodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość:
<syntaxhighlight lang="lua">
local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"";
local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
</syntaxhighlight>
== {{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do sprawdzenia - wymagany,
* {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}},
* {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Pierwszy przykład:
local parametr1="abc?edit=action";
-- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany;
local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false);
-- Drugi przykład:
local parametr2="a%YTbc?edit=action;";
-- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany;
local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false);
</syntaxhighlight>
== {{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do transformacji kodowania,
* {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
{{Hr}}
Przykłady pierwszy - podany tekst już zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="abc___?action=edit&section=21#nagłówek";
-- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&", czyli "&" został zamieniony na "&";
local parametr2="abc_?action=edit&section=21#nagłówek";
</syntaxhighlight>
{{Hr}}
Przykłady drugi - podany tekst jeszcze nie zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="a%YTbc___?action=edit;";
-- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "=";
local parametr2="a%25YTbc___%3Faction%3Dedit;";
</syntaxhighlight>
== {{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do odkodowania,
* {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}},
* {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków;
local parametr="a%25YTbc___%3Faction%3Dedit&section=23;";
local parametr2=html_modul.DecodeHtml(parametr,true);
</syntaxhighlight>
Wynik funkcji jest ukryty pod adresem:
<syntaxhighlight lang="lua">
-- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki;
local parametr2="a%YTbc ?action=edit§ion=23;";
</syntaxhighlight>
== {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>";
local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst);
</syntaxhighlight>
Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz;
local tekst2="<span id=\"Znaki<>\"\">To jest zawartość</span>";
</syntaxhighlight>
== {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\"nazwa\"\">Zawartość znacznika</a>";
local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst);
</syntaxhighlight>
Otrzymana zawartość jest pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że kody odpowiednie HTML, tzn.: "<", ">" i "&" zostały zamienione na odpowwiednie znaki;
local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>";
</syntaxhighlight>
== {{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu);
local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość;
local naglowek="Nagłówek strony";
</syntaxhighlight>
== {{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu);
local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne;
local parametry="action=edit§ion=2";
</syntaxhighlight>
== {{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu);
local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna";
</syntaxhighlight>
== {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
-- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true);
local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="Strona główna";
</syntaxhighlight>
== {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu);
local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość pełnego adresu strony poprawiona jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony,
* {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html"):
local url="//pl.wikibooks.org/wiki/Strona_artykułu";
local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,};
</syntaxhighlight>
Wartości zmiennych kryją się pod:
<syntaxhighlight lang="lua">
-- Widzimy, że nazwa serwera jest bez prawych ukośników;
local serwer="pl.wikibooks.org";
-- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi;
local nazwa="wiki/Strona_artykułu";
-- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu";
</syntaxhighlight>
== {{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local mail="użytkownik@skrzynka.org";
-- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail);
local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,};
---
local url="https://pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url);
local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="//pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url);
local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url);
local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,};
</syntaxhighlight>
Wyniki otrzymane z powyższych przykładów są:
<syntaxhighlight lang="lua">
local adres1,protokol1,sposob1="//skrzynka.org","mail",1;
local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2;
local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3;
local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1;
</syntaxhighlight>
== {{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi;
local tekst="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
-- Wywołanie funkcji odkodujący kody HTML;
local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst);
</syntaxhighlight>
Otrzymany wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Widzimy, że tekst został zdekodowany ze znaków HTML;
local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local tekst2=html_modul.ZamianaEncodeTekst(tekst);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}:
<syntaxhighlight lang="lua">
local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru;
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
-- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku;
local wzor="[^/%?%=&:%#]+";
-- Wywołanie funkcji kodującej;
local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2:}}
<syntaxhighlight lang="lua">
-- Zakodowało jeszcze więcej niż na samym początku było zakodowane;
local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do potrzelenia na trzy części.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek";
local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres);
</syntaxhighlight>
Otrzymane wartości tych zmiennych kryją się pod adresami:
<syntaxhighlight lang="lua">
local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
</syntaxhighlight>
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
== {{Code|p.TworzenieAdresuHtml(strona,...)}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka,
* {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
* {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek);
</syntaxhighlight>
Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta:
<syntaxhighlight lang="lua">
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
== {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml(strona,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres do przetworzenia,
* {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka,
* {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu.
Przykład takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local function ParametryEncodeURL(a,b,c)
return a..html_modul.ZamianaEncodeTekst(b).."="..html_modul.ZamianaEncodeTekst(c);
end;
local function OperacjeHtml(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryEncodeURL);
return adres;
end;
return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,
-- Funkcja: funkcja_strona;
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
-- Funkcja: funkcja_parametry;
OperacjeHtml,
-- Funkcja: funkcja_naglowek;
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end
);
</syntaxhighlight>
== {{Code|p.ParametryEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ParametryEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
local adres2=html_modul.ParametryEncodeURL(adres,true,
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ParametryZaawansowanyEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryZaawansowanyEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.ParametryZaawansowanyEncodeURL(adres,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodeSpecjalneZnakiHtml(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodeSpecjalneZnakiHtml(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeParametryHtml(parametr,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeParametryHtml(adres,true,
function(strona)
strona=html_modul.EncodeHtml(strona);
return strona;
end,
function(naglowek)
naglowek=html_modul.EncodeHtml(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F";
</syntaxhighlight>
== {{Code|p.EncodeZaawansowanyParametryHtml(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, a przed nim wywoływana jest {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny nagłówek ma być zakodowany,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodePodstawoweHtmlTekstu(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodePodstawoweHtmlTekstu(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Kody do zamienienia
local tekst="#, # i #";
-- Przetwarzanie tekstu
local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&num;" kodu HTML "#" dla znaku "#";
local tekst2,ile,ile2="&num;, &num; i &num;",3,3;
</syntaxhighlight>
== {{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia,
* {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Zamienione wcześniej kody: tekstu "#, # i #", kolejno na "&num;";
local tekst="&num;, &num; i &num;";
-- Odkodowanie znaków "&num;" w tekście;
local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3);
</syntaxhighlight>
Wynik jest ukryty pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="#, # i #";
</syntaxhighlight>
== {{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "#" i "#" oraz jeden od spacji: " ";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2";
local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony",3,1;
</syntaxhighlight>
== {{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
* {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części,
* {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej,
* {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst);
local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do zakodowania,
* {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true);
-- Adres bezprotokonalny;
local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false);
</syntaxhighlight>
Wynik wartości {{Code|adres12}} i {{Code|adres12}} jest:
<syntaxhighlight lang="lua">
-- Zakodowany adres z protokołem
local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
-- Zakodowany adres bez protokołu
local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
* {{Code|html}} - adres z protokołem strony.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
-- Równoważnie: local adres2=html_modul.UriEncode{html=adres,};
local adres2=html_modul.UriEncode(adres);
</syntaxhighlight>
Wynik jest w zmiennej:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
</syntaxhighlight>
== {{Code|p.EncodeElementyAdresuStrony(elementy_adresu_strony,...)}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - element adresu strony,
* {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry,
* {{Code|z_kodowaniem}} - czy jest włączone kodowanie funkcji po odkodowaniu i pewnych operacjach w tej funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local elementy_adresu_strony="Obsługa?";
local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a na końcu {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|z_kodowaniem}} - czy końcowo kodować,
* {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron.
Parametry tablicy ramki tabeli transportu:
* {{Code|html}} - adres do kodowania,
* {{Code|encode}} - czy kodować.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true);
local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit§ion=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
f6dmfvj0lypmkp97foctmfkpp1pzdtw
542698
542697
2026-05-12T11:00:22Z
Persino
2851
542698
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych,
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest tekst wywołania: \"#\"";
local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
== {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NAZWASERWISU|link=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},};
local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},};
local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,};
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},};
local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local html2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},};
local tekst2=html_modul.EncodeZnakProloguList(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
</syntaxhighlight>
== {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona?action=edit§ion=2";
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona?action=edit&section=2";
</syntaxhighlight>
== {{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona=Parametry";
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona=Parametry";
</syntaxhighlight>
Użycie w szablonie w postaci parametry nienazwanego (numerowanego):
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany.
== {{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="subst:msg:Szablon:Nazwa_strony";
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},};
local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="subst:msg:Szablon:Nazwa_strony";
</syntaxhighlight>
== {{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}},
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local znak="k";
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,};
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},};
local tekst2=html_modul.KodHTMLZnaku(znak);
-- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",};
local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k";
local tekst3="&#107;";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}}
* {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k"; -->
{{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "&#107;"; -->
{{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8,
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="k{{s";
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,};
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},};
local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak);
-- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",};
local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k{{s";
local tekst3="k&#123;&#123;s";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}}
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k{{s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "k&#123;&#123;s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
* {{Code|id}} - ciąg do przeinaczenia,
* {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,true);
</syntaxhighlight>
Wynikiem działania jest wartość ostatniej zmiennej:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "‎", składający się z trzech bajtów: "â", "€" i "Ž";
local tekst="Oto jest znak: ‎.";
-- Zamiana tego kodu na znak;
tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
-- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty;
tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst);
</syntaxhighlight>
Wynikiem tego kodu jest wartość ukryta pod zmienną:
<syntaxhighlight lang="lua">
local tekst="Oto jest znak: .";
</syntaxhighlight>
== {{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|n=mw.text.encode}}}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy zakodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: \"‎\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
local parametr2=html_modul.EncodeWiki(parametr,false);
local parametr3=html_modul.EncodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości:
<syntaxhighlight lang="lua">
local parametr2="Oto_jest_znak:_""_i_inne_znaki_w_URL:_"https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&action=edit#Obsługa;"";
local parametr3="__Oto jest znak: "" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
</syntaxhighlight>
== {{Code|p.DecodeWiki}} ==
Funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.decode|n=mw.text.decode}}}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy odkodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: "‎" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
local parametr2=html_modul.DecodeWiki(parametr,false);
local parametr3=html_modul.DecodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość:
<syntaxhighlight lang="lua">
local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"";
local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
</syntaxhighlight>
== {{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do sprawdzenia - wymagany,
* {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}},
* {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Pierwszy przykład:
local parametr1="abc?edit=action";
-- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany;
local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false);
-- Drugi przykład:
local parametr2="a%YTbc?edit=action;";
-- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany;
local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false);
</syntaxhighlight>
== {{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do transformacji kodowania,
* {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
{{Hr}}
Przykłady pierwszy - podany tekst już zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="abc___?action=edit&section=21#nagłówek";
-- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&", czyli "&" został zamieniony na "&";
local parametr2="abc_?action=edit&section=21#nagłówek";
</syntaxhighlight>
{{Hr}}
Przykłady drugi - podany tekst jeszcze nie zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="a%YTbc___?action=edit;";
-- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "=";
local parametr2="a%25YTbc___%3Faction%3Dedit;";
</syntaxhighlight>
== {{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do odkodowania,
* {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}},
* {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków;
local parametr="a%25YTbc___%3Faction%3Dedit&section=23;";
local parametr2=html_modul.DecodeHtml(parametr,true);
</syntaxhighlight>
Wynik funkcji jest ukryty pod adresem:
<syntaxhighlight lang="lua">
-- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki;
local parametr2="a%YTbc ?action=edit§ion=23;";
</syntaxhighlight>
== {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>";
local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst);
</syntaxhighlight>
Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz;
local tekst2="<span id=\"Znaki<>\"\">To jest zawartość</span>";
</syntaxhighlight>
== {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\"nazwa\"\">Zawartość znacznika</a>";
local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst);
</syntaxhighlight>
Otrzymana zawartość jest pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że kody odpowiednie HTML, tzn.: "<", ">" i "&" zostały zamienione na odpowwiednie znaki;
local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>";
</syntaxhighlight>
== {{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu);
local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość;
local naglowek="Nagłówek strony";
</syntaxhighlight>
== {{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu);
local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne;
local parametry="action=edit§ion=2";
</syntaxhighlight>
== {{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu);
local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna";
</syntaxhighlight>
== {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
-- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true);
local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="Strona główna";
</syntaxhighlight>
== {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu);
local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość pełnego adresu strony poprawiona jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony,
* {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html"):
local url="//pl.wikibooks.org/wiki/Strona_artykułu";
local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,};
</syntaxhighlight>
Wartości zmiennych kryją się pod:
<syntaxhighlight lang="lua">
-- Widzimy, że nazwa serwera jest bez prawych ukośników;
local serwer="pl.wikibooks.org";
-- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi;
local nazwa="wiki/Strona_artykułu";
-- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu";
</syntaxhighlight>
== {{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local mail="użytkownik@skrzynka.org";
-- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail);
local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,};
---
local url="https://pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url);
local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="//pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url);
local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url);
local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,};
</syntaxhighlight>
Wyniki otrzymane z powyższych przykładów są:
<syntaxhighlight lang="lua">
local adres1,protokol1,sposob1="//skrzynka.org","mail",1;
local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2;
local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3;
local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1;
</syntaxhighlight>
== {{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi;
local tekst="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
-- Wywołanie funkcji odkodujący kody HTML;
local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst);
</syntaxhighlight>
Otrzymany wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Widzimy, że tekst został zdekodowany ze znaków HTML;
local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local tekst2=html_modul.ZamianaEncodeTekst(tekst);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}:
<syntaxhighlight lang="lua">
local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru;
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
-- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku;
local wzor="[^/%?%=&:%#]+";
-- Wywołanie funkcji kodującej;
local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną:
<syntaxhighlight lang="lua">
-- Zakodowało jeszcze więcej niż na samym początku było zakodowane;
local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do potrzelenia na trzy części.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek";
local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres);
</syntaxhighlight>
Otrzymane wartości tych zmiennych kryją się pod adresami:
<syntaxhighlight lang="lua">
local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
</syntaxhighlight>
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
== {{Code|p.TworzenieAdresuHtml(strona,...)}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka,
* {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
* {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek);
</syntaxhighlight>
Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta:
<syntaxhighlight lang="lua">
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
== {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml(strona,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres do przetworzenia,
* {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka,
* {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu.
Przykład takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local function ParametryEncodeURL(a,b,c)
return a..html_modul.ZamianaEncodeTekst(b).."="..html_modul.ZamianaEncodeTekst(c);
end;
local function OperacjeHtml(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryEncodeURL);
return adres;
end;
return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,
-- Funkcja: funkcja_strona;
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
-- Funkcja: funkcja_parametry;
OperacjeHtml,
-- Funkcja: funkcja_naglowek;
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end
);
</syntaxhighlight>
== {{Code|p.ParametryEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ParametryEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
local adres2=html_modul.ParametryEncodeURL(adres,true,
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ParametryZaawansowanyEncodeURL(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryZaawansowanyEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.ParametryZaawansowanyEncodeURL(adres,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodeSpecjalneZnakiHtml(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodeSpecjalneZnakiHtml(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeParametryHtml(parametr,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeParametryHtml(adres,true,
function(strona)
strona=html_modul.EncodeHtml(strona);
return strona;
end,
function(naglowek)
naglowek=html_modul.EncodeHtml(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F";
</syntaxhighlight>
== {{Code|p.EncodeZaawansowanyParametryHtml(adres,...)}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,...)|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, a przed nim wywoływana jest {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny nagłówek ma być zakodowany,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodePodstawoweHtmlTekstu(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodePodstawoweHtmlTekstu(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Kody do zamienienia
local tekst="#, # i #";
-- Przetwarzanie tekstu
local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&num;" kodu HTML "#" dla znaku "#";
local tekst2,ile,ile2="&num;, &num; i &num;",3,3;
</syntaxhighlight>
== {{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia,
* {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Zamienione wcześniej kody: tekstu "#, # i #", kolejno na "&num;";
local tekst="&num;, &num; i &num;";
-- Odkodowanie znaków "&num;" w tekście;
local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3);
</syntaxhighlight>
Wynik jest ukryty pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="#, # i #";
</syntaxhighlight>
== {{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "#" i "#" oraz jeden od spacji: " ";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2";
local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony",3,1;
</syntaxhighlight>
== {{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
* {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części,
* {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej,
* {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst);
local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do zakodowania,
* {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true);
-- Adres bezprotokonalny;
local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false);
</syntaxhighlight>
Wynik wartości {{Code|adres12}} i {{Code|adres12}} jest:
<syntaxhighlight lang="lua">
-- Zakodowany adres z protokołem
local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
-- Zakodowany adres bez protokołu
local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,...)|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
* {{Code|html}} - adres z protokołem strony.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
-- Równoważnie: local adres2=html_modul.UriEncode{html=adres,};
local adres2=html_modul.UriEncode(adres);
</syntaxhighlight>
Wynik jest w zmiennej:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
</syntaxhighlight>
== {{Code|p.EncodeElementyAdresuStrony(elementy_adresu_strony,...)}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - element adresu strony,
* {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry,
* {{Code|z_kodowaniem}} - czy jest włączone kodowanie funkcji po odkodowaniu i pewnych operacjach w tej funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local elementy_adresu_strony="Obsługa?";
local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a na końcu {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml(adres,...)|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|z_kodowaniem}} - czy końcowo kodować,
* {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron.
Parametry tablicy ramki tabeli transportu:
* {{Code|html}} - adres do kodowania,
* {{Code|encode}} - czy kodować.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true);
local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit§ion=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bfysb7q37z5mwoy9kb1ed36ugkg6neg
542699
542698
2026-05-12T11:08:49Z
Persino
2851
542699
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych,
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest tekst wywołania: \"#\"";
local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
== {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NAZWASERWISU|link=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},};
local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="<span id=\"toc\">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
</syntaxhighlight>
== {{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},};
local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,};
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},};
local html2=html_modul.EncodeSpecjalneZnakiHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local html2="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
</syntaxhighlight>
== {{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},};
local tekst2=html_modul.EncodeZnakProloguList(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
</syntaxhighlight>
== {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona?action=edit§ion=2";
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona?action=edit&section=2";
</syntaxhighlight>
== {{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona=Parametry";
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="Wikibooks:Strona=Parametry";
</syntaxhighlight>
Użycie w szablonie w postaci parametry nienazwanego (numerowanego):
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
może powodować pewne problemy, ta zmienna nie zostanie nazwana jako nienazwana, tylko jako nazwana o nazwie parametru {{Code|Wikibooks:Strona}} i wartości {{Code|Parametry}}. Aby tego uniknąć, wypadałoby napisać to wywołanie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wtedy to zostanie na pewno zostanie potraktowane jako zmienna nienazwana (numerowana). Szczególnie to jest ważne, gdy używamy funkcji: {{Code|{{sr|#p["Rozwiń"]|p=Ramka}}}}, do rozwijania parametrów. W takim przypadku trzeba używać funkcji: {{Code|{{sr|#p.PrzypisanieZnakoweEncodeHtml|p=Html}}}}, aby zamienić przypisanie na parametr numerowany.
== {{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="subst:msg:Szablon:Nazwa_strony";
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},};
local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst);
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="subst:msg:Szablon:Nazwa_strony";
</syntaxhighlight>
== {{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - zmienna, pod którym jest znak do zamiany na kod dziesiętny {{Strong|HTML}},
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local znak="k";
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,};
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},};
local tekst2=html_modul.KodHTMLZnaku(znak);
-- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",};
local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k";
local tekst3="&#107;";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodHTMLZnaku|k}}}} → {{Tt|{{KodHTMLZnaku|k}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k}}}}}}
* {{Code|{{s|KodHTMLZnaku|k|tak}}}} → {{Tt|{{KodHTMLZnaku|k|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} → {{Tt|{{Nowiki|{{KodHTMLZnaku|k|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k"; -->
{{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "&#107;"; -->
{{#invoke:Html|KodHTMLZnaku|k|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8,
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="k{{s";
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,};
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},};
local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](znak);
-- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",};
local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},};
</syntaxhighlight>
Wyniki działania:
<syntaxhighlight lang="lua">
local tekst2="k{{s";
local tekst3="k&#123;&#123;s";
</syntaxhighlight>
Szablonowo taką zamianę możemy napisać:
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}}}}
* {{Code|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}} → {{Tt|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}
* {{Code|{{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} → {{Tt|{{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}}}}
Równie dobrze możemy napisać takie wywołania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
<!-- Wyświetla wynik: "k{{s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}}
<!-- Wyświetla wynik: "k&#123;&#123;s"; -->
{{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|tak|wyspecjalizowana=tak}}
</syntaxhighlight>
== {{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
* {{Code|id}} - ciąg do przeinaczenia,
* {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,true);
</syntaxhighlight>
Wynikiem działania jest wartość ostatniej zmiennej:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "‎", składający się z trzech bajtów: "â", "€" i "Ž";
local tekst="Oto jest znak: ‎.";
-- Zamiana tego kodu na znak;
tekst=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
-- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty;
tekst=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst);
</syntaxhighlight>
Wynikiem tego kodu jest wartość ukryta pod zmienną:
<syntaxhighlight lang="lua">
local tekst="Oto jest znak: .";
</syntaxhighlight>
== {{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.encode|n=mw.text.encode}}}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy zakodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: \"‎\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
local parametr2=html_modul.EncodeWiki(parametr,false);
local parametr3=html_modul.EncodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartości:
<syntaxhighlight lang="lua">
local parametr2="Oto_jest_znak:_""_i_inne_znaki_w_URL:_"https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&action=edit#Obsługa;"";
local parametr3="__Oto jest znak: "" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
</syntaxhighlight>
== {{Code|p.DecodeWiki}} ==
Funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.decode|n=mw.text.decode}}}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy odkodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: "‎" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
local parametr2=html_modul.DecodeWiki(parametr,false);
local parametr3=html_modul.DecodeWiki(parametr,true);
</syntaxhighlight>
Wynikiem działania tej funkcji jest parametr {{Code|parametr2}} i {{Code|parametr3}}, którego wartość:
<syntaxhighlight lang="lua">
local parametr2="Oto jest znak: \"\" i inne znaki w URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"";
local parametr3="__Oto jest znak: \"\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
</syntaxhighlight>
== {{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do sprawdzenia - wymagany,
* {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}},
* {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Pierwszy przykład:
local parametr1="abc?edit=action";
-- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany;
local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false);
-- Drugi przykład:
local parametr2="a%YTbc?edit=action;";
-- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany;
local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false);
</syntaxhighlight>
== {{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do transformacji kodowania,
* {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
{{Hr}}
Przykłady pierwszy - podany tekst już zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="abc___?action=edit&section=21#nagłówek";
-- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że podwojone myślniki dolne zostały zamienione na pojedyncze, kody HTML zostały zamienione na znaki, a znak "&", czyli "&" został zamieniony na "&";
local parametr2="abc_?action=edit&section=21#nagłówek";
</syntaxhighlight>
{{Hr}}
Przykłady drugi - podany tekst jeszcze nie zakodowany:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="a%YTbc___?action=edit;";
-- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
</syntaxhighlight>
Wynik zmiennej {{Code|parametr2}} jest ukryty pod jego wartością:
<syntaxhighlight lang="lua">
-- Widzimy, że znak "%" został zakodowany funkcją mw.uri.encode, podobnie tą funkcją zostały zakodowane: "?" i "=";
local parametr2="a%25YTbc___%3Faction%3Dedit;";
</syntaxhighlight>
== {{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do odkodowania,
* {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}},
* {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków;
local parametr="a%25YTbc___%3Faction%3Dedit&section=23;";
local parametr2=html_modul.DecodeHtml(parametr,true);
</syntaxhighlight>
Wynik funkcji jest ukryty pod adresem:
<syntaxhighlight lang="lua">
-- Funkcja została uznana za zakodowaną i odkodowano ją funkcją mw.uri.decode, dalej dwa dolne myślniki zostały zamienione na jedną spację, a kody HTML zostały zamienione na odpowiednie znaki;
local parametr2="a%YTbc ?action=edit§ion=23;";
</syntaxhighlight>
== {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>";
local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst);
</syntaxhighlight>
Wartość tej zmiennej jest ukryta pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że został sam jeden atrybut ze znakami HTML wewnątrz;
local tekst2="<span id=\"Znaki<>\"\">To jest zawartość</span>";
</syntaxhighlight>
== {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\"nazwa\"\">Zawartość znacznika</a>";
local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst);
</syntaxhighlight>
Otrzymana zawartość jest pod {{Code|tekst2}}:
<syntaxhighlight lang="lua">
-- Widzimy, że kody odpowiednie HTML, tzn.: "<", ">" i "&" zostały zamienione na odpowwiednie znaki;
local tekst2="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\\\"nazwa\\\"\">Zawartość znacznika</a>";
</syntaxhighlight>
== {{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu);
local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony, nagłówek usuwając z niego myślniki dolne i trimując zawartość;
local naglowek="Nagłówek strony";
</syntaxhighlight>
== {{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu);
local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony parametry, usuwając z niego zbędne odstępy i myślniki dolne;
local parametry="action=edit§ion=2";
</syntaxhighlight>
== {{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu);
local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę strony adresu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="https://pl.wikibooks.org/wiki/Strona_główna";
</syntaxhighlight>
== {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
-- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true);
local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil);
</syntaxhighlight>
Wartość nagłówka jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z adresu strony nazwę artykułu, usuwając z niego zbędne odstępy i myślniki dolne;
local nazwa_strony="Strona główna";
</syntaxhighlight>
== {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry funkcji ramki parametry {{Code|frame}}:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu);
local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
</syntaxhighlight>
Wartość pełnego adresu strony poprawiona jest w zmiennej:
<syntaxhighlight lang="lua">
-- Wydzielono z pełnego adresu strony adres, parametry i nagłówek, naprawione i złączone ze sobą w pełny poprawiony adres;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony,
* {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html"):
local url="//pl.wikibooks.org/wiki/Strona_artykułu";
local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,};
</syntaxhighlight>
Wartości zmiennych kryją się pod:
<syntaxhighlight lang="lua">
-- Widzimy, że nazwa serwera jest bez prawych ukośników;
local serwer="pl.wikibooks.org";
-- Nazwa strony zaczyna się bez ukośnika, bo powiedzieliśmy funkcji, by nie brał prawych ukośników, które są na początku nazwy strony, bez nazwy serwera i protokołu, ale w sobie może mieć on, ale nie musi;
local nazwa="wiki/Strona_artykułu";
-- Gdyby było ["ukośnik"]=false, to wtedy otrzymalibyśmy inny wynik, czyli: local nazwa="/wiki/Strona_artykułu";
</syntaxhighlight>
== {{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry ramki:
* {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local mail="użytkownik@skrzynka.org";
-- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail);
local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=mail,};
---
local url="https://pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url);
local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="//pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url);
local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url,};
---
local url="pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url);
local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url,};
</syntaxhighlight>
Wyniki otrzymane z powyższych przykładów są:
<syntaxhighlight lang="lua">
local adres1,protokol1,sposob1="//skrzynka.org","mail",1;
local adres2,protokol2,sposob2="//pl.wikibooks.org/wiki/Strona","https",2;
local adres3,protokol3,sposob3="//pl.wikibooks.org/wiki/Strona",nil,3;
local adres4,protokol4,sposob4="//pl.wikibooks.org/wiki/Strona",nil,-1;
</syntaxhighlight>
== {{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi;
local tekst="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
-- Wywołanie funkcji odkodujący kody HTML;
local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst);
</syntaxhighlight>
Otrzymany wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Widzimy, że tekst został zdekodowany ze znaków HTML;
local tekst2="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local tekst2=html_modul.ZamianaEncodeTekst(tekst);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną {{Code|tekst2}}:
<syntaxhighlight lang="lua">
local tekst2="https%3A%2F%2Fpl.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DSzablon%3ALink_wewn%C4%99trzny%26action%3Dedit%23Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)...end;
</syntaxhighlight>
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru;
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
-- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku;
local wzor="[^/%?%=&:%#]+";
-- Wywołanie funkcji kodującej;
local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor);
</syntaxhighlight>
Wynikiem funkcji, co kryje się pod zmienną:
<syntaxhighlight lang="lua">
-- Zakodowało jeszcze więcej niż na samym początku było zakodowane;
local tekst2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do potrzelenia na trzy części.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Adresstrony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek";
local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres);
</syntaxhighlight>
Otrzymane wartości tych zmiennych kryją się pod adresami:
<syntaxhighlight lang="lua">
local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
</syntaxhighlight>
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
== {{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka,
* {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
* {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local strona,parametry,naglowek,ile="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony",3;
local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek);
</syntaxhighlight>
Otrzymany pełny pojedynczy adres strony, z normalnym adresem strony z parametrami i nagłówkiem, jest ukryta:
<syntaxhighlight lang="lua">
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
== {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres do przetworzenia,
* {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka,
* {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu.
Przykład takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local function ParametryEncodeURL(a,b,c)
return a..html_modul.ZamianaEncodeTekst(b).."="..html_modul.ZamianaEncodeTekst(c);
end;
local function OperacjeHtml(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryEncodeURL);
return adres;
end;
return html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,
-- Funkcja: funkcja_strona;
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
-- Funkcja: funkcja_parametry;
OperacjeHtml,
-- Funkcja: funkcja_naglowek;
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end
);
</syntaxhighlight>
== {{Code|p.ParametryEncodeURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ParametryEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
local adres2=html_modul.ParametryEncodeURL(adres,true,
function(strona)
strona=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end,
function(naglowek)
naglowek=html_modul.ZamianaEncodeTekst(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="//pl.wikibooks.org/w/index.php?title=Szablon%3ALink_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
</syntaxhighlight>
== {{Code|p.ParametryZaawansowanyEncodeURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryZaawansowanyEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.ParametryZaawansowanyEncodeURL(adres,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodeSpecjalneZnakiHtml(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodeSpecjalneZnakiHtml(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeParametryHtml(adres,true,
function(strona)
strona=html_modul.EncodeHtml(strona);
return strona;
end,
function(naglowek)
naglowek=html_modul.EncodeHtml(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewn%C4%99trzny?action=edit#Obs%C5%82uga%3F";
</syntaxhighlight>
== {{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny nagłówek ma być zakodowany,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
Przykłady takiego wywołania:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true,
function(strona)
strona=mw.uri.decode(strona);
strona=html_modul.EncodePodstawoweHtmlTekstu(strona);
strona=mw.uri.encode(strona);
return strona;
end,
function(naglowek)
naglowek=mw.uri.decode(naglowek);
naglowek=html_modul.EncodePodstawoweHtmlTekstu(naglowek);
naglowek=mw.uri.encode(naglowek);
return naglowek;
end);
</syntaxhighlight>
Wartość zmiennej {{Code|adres2}} jest w wartości:
<syntaxhighlight lang="lua">
local adres2="Szablon%3ALink_wewn%C4%99trzny?action=edit#Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Kody do zamienienia
local tekst="#, # i #";
-- Przetwarzanie tekstu
local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik jest pod zmienną:
<syntaxhighlight lang="lua">
-- Wszystkie możliwe warianty funkcja zamieniła na to samo, czyli na: "&num;" kodu HTML "#" dla znaku "#";
local tekst2,ile,ile2="&num;, &num; i &num;",3,3;
</syntaxhighlight>
== {{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia,
* {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Zamienione wcześniej kody: tekstu "#, # i #", kolejno na "&num;";
local tekst="&num;, &num; i &num;";
-- Odkodowanie znaków "&num;" w tekście;
local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3);
</syntaxhighlight>
Wynik jest ukryty pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="#, # i #";
</syntaxhighlight>
== {{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "#" i "#" oraz jeden od spacji: " ";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2";
local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2,ile1,ile2="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony",3,1;
</syntaxhighlight>
== {{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
* {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części,
* {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej,
* {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst);
local tekst2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst,3,1);
</syntaxhighlight>
Wynik tego jest pod zmienną:
<syntaxhighlight lang="lua">
local tekst2="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
</syntaxhighlight>
== {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do zakodowania,
* {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true);
-- Adres bezprotokonalny;
local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false);
</syntaxhighlight>
Wynik wartości {{Code|adres12}} i {{Code|adres12}}:
<syntaxhighlight lang="lua">
-- Zakodowany adres z protokołem
local adres12="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
-- Zakodowany adres bez protokołu
local adres22="//pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
* {{Code|html}} - adres z protokołem strony.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
-- Równoważnie: local adres2=html_modul.UriEncode{html=adres,};
local adres2=html_modul.UriEncode(adres);
</syntaxhighlight>
Wynik jest w zmiennej:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_g%C5%82%C3%B3wna?action=edit§ion=2#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
== {{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
</syntaxhighlight>
== {{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - element adresu strony,
* {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry,
* {{Code|z_kodowaniem}} - czy jest włączone kodowanie funkcji po odkodowaniu i pewnych operacjach w tej funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local elementy_adresu_strony="Obsługa?";
local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local elementy_adresu_strony2="Obs%C5%82uga%26%2363%3B";
</syntaxhighlight>
== {{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.decode|n=mw.uri.decode}}}}, a na końcu {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|n=mw.uri.encode}}}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|z_kodowaniem}} - czy końcowo kodować,
* {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron.
Parametry tablicy ramki tabeli transportu:
* {{Code|html}} - adres do kodowania,
* {{Code|encode}} - czy kodować.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true);
local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true);
</syntaxhighlight>
Wartość zmiennej jest ukryta pod:
<syntaxhighlight lang="lua">
local adres2="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres3="https://pl.wikibooks.org/wiki/Strona_%26%2338%3Bg%C5%82%C3%B3wna%26%2363%3B%26%2338%3B?action=edit§ion=2&title=Nazwa%20strony%20szablonu%3A%20%26%23123%3B%26%23123%3B%21%26%23125%3B%26%23125%3B#Nag%C5%82%C3%B3wek%20strony";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
599zhacj3lab3vjs728ktm9xfv920nw
Wikibooks:Moduły/StronicowyParser/Rozdziały
4
63521
542657
542619
2026-05-11T21:46:36Z
Persino
2851
542657
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7btotq2f9lguq6t3s22vtfl082gbvwa
Wikibooks:Moduły/StronicowyParser/Tekst
4
63524
542654
542630
2026-05-11T21:30:33Z
Persino
2851
542654
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|SpreparowanyWikikodStrony}}{{Code|p.SpreparowanyWikikodStrony}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{LinkŚródtytuł|PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli z korzystanej tutaj funkcji zrzuciło to niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i wartość: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami, te funkcje są wywoływane wewnątrz funkcji: {{LinkŚródtytuł|SpreparowanyWikikodStrony}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Śródtytuł|PobierzSpecjalniePrzygotowanyPreWikikodStrony}}{{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2c0ea64r7sm7jad9hao9efc3xedx5eo
Moduł:Oblicz-arkusz/styles.css
828
63535
542691
542589
2026-05-12T09:59:25Z
Persino
2851
542691
sanitized-css
text/css
.oblicz-arkusz{
font-size:14px;
line-height:1.4;
float:right;
clear:right;
margin:1em;
margin-right:0;
width:fit-content;
}
.oblicz-arkusz > table{
margin:0;
float:none;
clear:both;
text-align:center;
max-width:400px;
min-width:400px;
width:auto;
}
.oblicz-arkusz > table > tbody > tr > th:first-child,
.oblicz-arkusz > table > tbody > tr > td:first-child{
max-width:fit-content;
min-width:20px;
width:auto;
}
.oblicz-arkusz > table > tbody > tr > th:not(:first-child),
.oblicz-arkusz > table > tbody > tr > td:not(:first-child){
max-width:fit-content;
min-width:20px;
width:auto;
word-wrap: break-word !important;
word-break: break-word !important;
}
.oblicz-arkusz > table > tbody > tr > th,
.oblicz-arkusz > table > tbody > tr > td{
width:auto;
box-sizing:border-box;
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.oblicz-arkusz{
float:none;
clear:none;
max-width:100vw;
width:100%;
margin:0;
overflow:auto;
padding-bottom:0.25em;
}
.oblicz-arkusz > table{
display:table !important;
max-width:none;
width:100%;
}
}
/*{{Kategoria|Moduły - arkusze stylów}}*/
ffnzrd6us3acmj83d1cy7guoa6jr25n
542692
542691
2026-05-12T10:07:45Z
Persino
2851
542692
sanitized-css
text/css
.oblicz-arkusz{
font-size:14px;
line-height:1.4;
float:right;
clear:right;
margin:1em;
margin-right:0;
width:fit-content;
}
.oblicz-arkusz > table{
margin:0;
float:none;
clear:both;
text-align:center;
max-width:min-content;
min-width:400px;
width:auto;
}
.oblicz-arkusz > table > tbody > tr > th:first-child,
.oblicz-arkusz > table > tbody > tr > td:first-child{
max-width:fit-content;
min-width:20px;
width:auto;
}
.oblicz-arkusz > table > tbody > tr > th:not(:first-child),
.oblicz-arkusz > table > tbody > tr > td:not(:first-child){
max-width:fit-content;
min-width:20px;
width:auto;
word-wrap: break-word !important;
word-break: break-word !important;
}
.oblicz-arkusz > table > tbody > tr > th,
.oblicz-arkusz > table > tbody > tr > td{
width:auto;
box-sizing:border-box;
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.oblicz-arkusz{
float:none;
clear:none;
max-width:100vw;
width:100%;
margin:0;
overflow:auto;
padding-bottom:0.25em;
}
.oblicz-arkusz > table{
display:table !important;
max-width:none;
width:100%;
}
}
/*{{Kategoria|Moduły - arkusze stylów}}*/
hyhulpczpuce7djjkzt1gk5ogifv2we
Niemiecki/Ortografia/Pisownia s, ss, ß
0
63536
542686
2026-05-12T06:54:02Z
EdytaT
2664
Utworzono nową stronę " {{Rozdział|[[Niemiecki|Język niemiecki]]|[[Niemiecki/Ortografia|Ortografia]]<br>Pisownia s, ss, ß<br>(''s-Schreibung: s, ss und ß'')}} * W Szwajcarii i Liechtensteinie litera ß nie występuje i jest zastępowana przez ss<ref name=Duden/>: :* np. ''Stra'''ss'''e'', ''au'''ss'''en'' ... {{Przypisy |<ref name=Duden>Duden online, ''Sprachwissen'', [https://www.duden.de/sprachwissen/rechtschreibregeln/doppel-s-und-scharfes-s ''s-Schreibung: s, ss und ß'' (D160)…"
542686
wikitext
text/x-wiki
{{Rozdział|[[Niemiecki|Język niemiecki]]|[[Niemiecki/Ortografia|Ortografia]]<br>Pisownia s, ss, ß<br>(''s-Schreibung: s, ss und ß'')}}
* W Szwajcarii i Liechtensteinie litera ß nie występuje i jest zastępowana przez ss<ref name=Duden/>:
:* np. ''Stra'''ss'''e'', ''au'''ss'''en'' ...
{{Przypisy
|<ref name=Duden>Duden online, ''Sprachwissen'', [https://www.duden.de/sprachwissen/rechtschreibregeln/doppel-s-und-scharfes-s ''s-Schreibung: s, ss und ß'' (D160)]. Dostęp 12.05.2026.</ref>
}}
h9fqicw7bublq63xw44u2zxvqnus4el