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 "&amp;&num;"..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 "&amp;&num;"..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: &#956; local ile2; tekst,ile2=mw.ustring.gsub(tekst,"&#(%d+);", function(n) return mw.ustring.char(tonumber(n)) end); -- encje numeryczne szesnastkowe: &#x3BC; 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 "&amp;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,"&amp;num;",function(kod) return "&#35;"; end); end; return tekst; end; function p.EncodeTempHashKoduHtmlTekstu(tekst) local ile1;local ile2; tekst,ile1=mw.ustring.gsub(tekst,"&#(%d+);",function(kod) return "&&num;"..kod..";"; end); tekst,ile2=mw.ustring.gsub(tekst,"&#x(%x+);",function(kod) return "&&num;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,"&&num;(%d+);",function(kod) return "&#"..kod..";" end); end; if(((ile2)and(ile2>0))or(not ile2))then tekst=mw.ustring.gsub(tekst,"&&num;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.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.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.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,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 "&#91;"..tab_grupa[grupa].."&#93;" elseif(nazwa_szablonu=="U")then local grupa="uwaga"; tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ----- return "&#91;"..grupa.." "..tab_grupa[grupa].."&#93;"; elseif(nazwa_szablonu=="Ref")then local grupa=tabela_parametrow_szablonu["grupa"] or ""; tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; 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 "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"(<)(/?%s*[^<>]+/?)(>)",function(lewy,tekst,prawy) return "&gt;"..tekst.."&lt;"; 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 "&gt;"..tekst.."&lt;"; 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.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.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.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,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 "&#91;"..tab_grupa[grupa].."&#93;" elseif(nazwa_szablonu=="U")then local grupa="uwaga"; tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ----- return "&#91;"..grupa.." "..tab_grupa[grupa].."&#93;"; elseif(nazwa_szablonu=="Ref")then local grupa=tabela_parametrow_szablonu["grupa"] or ""; tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; 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 "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local 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 "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; 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 "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; 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('.')+".&nbsp;"); 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('.')+".&nbsp;"); } }); 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+".&nbsp;"); 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,"&amp;gt;").replace(/</g,"&amp;lt;").replace(/\//g,"&amp;#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(/&amp;gt;/g,">").replace(/&amp;lt;/g,"<").replace(/&amp;#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)?("&section="+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)?("&section="+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(/&amp;/g,"&").replace(/&nbsp;/g," "); var hash=link_strona.replace(/^([^#]*)#(.*)$/,"$2").replace(/&amp;/g,"&").replace(/&nbsp;/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(/&amp;/g,"&").replace(/&nbsp;/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(/&amp;/g,"&").replace(/&nbsp;/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('.')+".&nbsp;"); 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('.')+".&nbsp;"); } }); 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+".&nbsp;"); 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,"&amp;gt;").replace(/</g,"&amp;lt;").replace(/\//g,"&amp;#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(/&amp;gt;/g,">").replace(/&amp;lt;/g,"<").replace(/&amp;#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)?("&section="+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)?("&section="+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(/&amp;/g,"&").replace(/&nbsp;/g," "); var hash=link_strona.replace(/^([^#]*)#(.*)$/,"$2").replace(/&amp;/g,"&").replace(/&nbsp;/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(/&amp;/g,"&").replace(/&nbsp;/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(/&amp;/g,"&").replace(/&nbsp;/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('.')+".&nbsp;"); 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('.')+".&nbsp;"); } }); 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+".&nbsp;"); 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,"&amp;gt;").replace(/</g,"&amp;lt;").replace(/\//g,"&amp;#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(/&amp;gt;/g,">").replace(/&amp;lt;/g,"<").replace(/&amp;#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)?("&section="+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)?("&section="+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(/&amp;/g,"&").replace(/&nbsp;/g," "); var hash=link_strona.replace(/^([^#]*)#(.*)$/,"$2").replace(/&amp;/g,"&").replace(/&nbsp;/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(/&amp;/g,"&").replace(/&nbsp;/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(/&amp;/g,"&").replace(/&nbsp;/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&parametr_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&parametr_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&parametr_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&parametr_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&parametr_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&parametr_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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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|&amp;#(%d+)}} lub {{Code|&amp;#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: \"&#35;\""; 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&#35;%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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- 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="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </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="&#42; Oto jest pierwszy element listy,\n&#42;: 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&section=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&section=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&#63;action&#61;edit&#38;section&#61;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&#61;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&#61;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&#58;msg&#58;Szablon&#58;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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="&#107;"; local tekst3="&amp;&num;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: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;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&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;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&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;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|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). 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 "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- 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|&#8206;}}}} 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: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </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|&#8206;}}}}, 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: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; 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___&#63;action&#61;edit&#38;section&#61;21&#35;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 "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;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&#38;section&#61;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&section=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&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} 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="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" 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&section=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&section=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: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- 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|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, 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&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=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|&amp;&num;}}}}. 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&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;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|&#35;}}}} 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="&num;, &#35; i &#x23;"; -- 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: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu(tekst,ile)}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;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;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </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|&num;}}}}. 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: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}. 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: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=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&section=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&section=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&section=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&section=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|&#35}}}}, 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&#63;action&#61;edit&#35;Obsługa&#63;"; </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&section=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_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#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&section=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: \"&#35;\""; 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&#35;%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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- 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="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </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="&#42; Oto jest pierwszy element listy,\n&#42;: 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&section=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&section=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&#63;action&#61;edit&#38;section&#61;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&#61;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&#61;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&#58;msg&#58;Szablon&#58;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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="&#107;"; local tekst3="&amp;&num;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: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;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&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;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&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;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|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). 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 "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- 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|&#8206;}}}} 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: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </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|&#8206;}}}}, 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: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; 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___&#63;action&#61;edit&#38;section&#61;21&#35;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 "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;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&#38;section&#61;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&section=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&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} 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="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" 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&section=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&section=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: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- 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|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, 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&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=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|&amp;&num;}}}}. 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&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;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|&#35;}}}} 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="&num;, &#35; i &#x23;"; -- 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: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu(tekst,ile)}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;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;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </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|&num;}}}}. 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: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}. 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: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=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&section=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&section=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&section=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&section=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|&#35}}}}, 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&#63;action&#61;edit&#35;Obsługa&#63;"; </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&section=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_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#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&section=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: \"&#35;\""; 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&#35;%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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- 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="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </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="&#42; Oto jest pierwszy element listy,\n&#42;: 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&section=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&section=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&#63;action&#61;edit&#38;section&#61;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&#61;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&#61;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&#58;msg&#58;Szablon&#58;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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="&#107;"; local tekst3="&amp;&num;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: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;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&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;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&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;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|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). 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 "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- 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|&#8206;}}}} 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: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </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|&#8206;}}}}, 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: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; 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___&#63;action&#61;edit&#38;section&#61;21&#35;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 "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;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&#38;section&#61;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&section=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&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} 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="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" 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&section=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&section=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: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- 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|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, 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&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=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|&amp;&num;}}}}. 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&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;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|&#35;}}}} 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="&num;, &#35; i &#x23;"; -- 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: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu(tekst,ile)}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;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;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </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|&num;}}}}. 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: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}. 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: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=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&section=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&section=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&section=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&section=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|&#35}}}}, 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&#63;action&#61;edit&#35;Obsługa&#63;"; </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&section=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_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#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&section=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: \"&#35;\""; 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&#35;%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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- 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="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </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="&#42; Oto jest pierwszy element listy,\n&#42;: 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&section=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&section=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&#63;action&#61;edit&#38;section&#61;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&#61;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&#61;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&#58;msg&#58;Szablon&#58;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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="&#107;"; local tekst3="&amp;&num;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: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;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&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;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&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;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|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). 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 "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- 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|&#8206;}}}} 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: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </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|&#8206;}}}}, 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: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; 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___&#63;action&#61;edit&#38;section&#61;21&#35;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 "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;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&#38;section&#61;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&section=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&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} 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="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" 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&section=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&section=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: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- 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|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, 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&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=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|&amp;&num;}}}}. 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&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;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|&#35;}}}} 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="&num;, &#35; i &#x23;"; -- 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: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;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;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </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|&num;}}}}. 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: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}. 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: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=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&section=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&section=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&section=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&section=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|&#35}}}}, 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&#63;action&#61;edit&#35;Obsługa&#63;"; </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&section=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_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#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&section=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: \"&#35;\""; 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&#35;%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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- 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="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </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="&#42; Oto jest pierwszy element listy,\n&#42;: 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&section=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&section=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&#63;action&#61;edit&#38;section&#61;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&#61;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&#61;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&#58;msg&#58;Szablon&#58;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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="&#107;"; local tekst3="&amp;&num;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: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;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&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;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&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;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|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). 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 "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- 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|&#8206;}}}} 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: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </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|&#8206;}}}}, 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: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; 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___&#63;action&#61;edit&#38;section&#61;21&#35;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 "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;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&#38;section&#61;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&section=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&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} 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="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" 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&section=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&section=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: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- 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|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, 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&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=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|&amp;&num;}}}}. 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&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;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|&#35;}}}} 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="&num;, &#35; i &#x23;"; -- 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: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;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;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </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|&num;}}}}. 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: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}. 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: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=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&section=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&section=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&section=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&section=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|&#35}}}}, 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&#63;action&#61;edit&#35;Obsługa&#63;"; </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&section=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_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#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&section=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: \"&#35;\""; 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&#35;%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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- 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="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </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="&#42; Oto jest pierwszy element listy,\n&#42;: 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&section=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&section=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&#63;action&#61;edit&#38;section&#61;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&#61;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&#61;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&#58;msg&#58;Szablon&#58;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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="&#107;"; local tekst3="&amp;&num;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: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;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&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;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&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;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|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). 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 "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- 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|&#8206;}}}} 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: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </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|&#8206;}}}}, 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: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; 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___&#63;action&#61;edit&#38;section&#61;21&#35;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 "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;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&#38;section&#61;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&section=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&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} 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="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" 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&section=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&section=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: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- 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|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, 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&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=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|&amp;&num;}}}}. 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&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;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|&#35;}}}} 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="&num;, &#35; i &#x23;"; -- 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: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;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;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </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|&num;}}}}. 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: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}. 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: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=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&section=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&section=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&section=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&section=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|&#35}}}}, 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&#63;action&#61;edit&#35;Obsługa&#63;"; </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&section=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_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#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&section=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: \"&#35;\""; 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&#35;%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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- 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="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </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="&#42; Oto jest pierwszy element listy,\n&#42;: 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&section=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&section=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&#63;action&#61;edit&#38;section&#61;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&#61;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&#61;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&#58;msg&#58;Szablon&#58;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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="&#107;"; local tekst3="&amp;&num;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: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;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&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;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&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;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|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). 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 "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- 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|&#8206;}}}} 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: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </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|&#8206;}}}}, 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: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; 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___&#63;action&#61;edit&#38;section&#61;21&#35;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 "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;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&#38;section&#61;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&section=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&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} 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="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" 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&section=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&section=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: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- 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|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, 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&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=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|&amp;&num;}}}}. 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&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;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|&#35;}}}} 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="&num;, &#35; i &#x23;"; -- 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: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;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;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </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|&num;}}}}. 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: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}. 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: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=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&section=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&section=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&section=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&section=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|&#35}}}}, 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&#63;action&#61;edit&#35;Obsługa&#63;"; </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&section=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_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#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&section=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: \"&#35;\""; 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&#35;%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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- 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="&#60;span id&#61;\"toc\"&#62;Oto jest tekst, i link: &#91;&#91;Pomoc:Spis treści&#124;Spis treści&#93;&#93;&#60;/span&#62;."; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1=wartość1&#124;parametr 2=wartość2&#125;&#125;"; </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="&#91;pl&#93; Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: &#123;&#123;Szablon do używania&#124;parametr 1&#61;wartość1&#124;parametr 2&#61;wartość2&#125;&#125;"; </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="&#42; Oto jest pierwszy element listy,\n&#42;: 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&section=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&section=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&#63;action&#61;edit&#38;section&#61;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&#61;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&#61;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&#58;msg&#58;Szablon&#58;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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="&#107;"; local tekst3="&amp;&num;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: "&#107;"; --> {{#invoke:Html|KodHTMLZnaku|k|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "&amp;&num;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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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&#123;&#123;s"; local tekst3="k&amp;&num;123;&amp;&num;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&#123;&#123;s"; --> {{#invoke:Html|KodyHTMLZnakówWikiCiągu|k{{((}}s|wyspecjalizowana=tak}} <!-- Wyświetla wynik: "k&amp;&num;123;&amp;&num;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&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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&#63;title&#61;Szablon:Link_wewn%C4%99trzny&#38;action&#61;edit&#35;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|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). 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 "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst="Oto jest znak: &#8206;."; -- 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|&#8206;}}}} 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: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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:_&quot;&quot;_i_inne_znaki_w_URL:_&quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewnętrzny&amp;action=edit#Obsługa;&quot;"; local parametr3="__Oto jest znak: &quot;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&amp;action=edit#Obsługa;&quot;__"; </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|&#8206;}}}}, 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: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; 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___&#63;action&#61;edit&#38;section&#61;21&#35;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 "&#38;", czyli "&" został zamieniony na "&amp;"; local parametr2="abc_?action=edit&amp;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&#38;section&#61;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&section=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&lt;&gt;&#92;&#34;\">To jest zawartość</span>"; </syntaxhighlight> == {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)}} == Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} 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="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst); </syntaxhighlight> Otrzymana zawartość jest pod {{Code|tekst2}}: <syntaxhighlight lang="lua"> -- Widzimy, że kody odpowiednie HTML, tzn.: "&lt;", "&gt;" i "&amp;" 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&section=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&section=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: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- 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|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, 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&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek","action=edit&section=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|&amp;&num;}}}}. 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&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=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&#32;główna&#35;&#35;&#35;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;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|&#35;}}}} 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="&num;, &#35; i &#x23;"; -- 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: "&amp;num;" kodu HTML "&num;" dla znaku "#"; local tekst2,ile,ile2="&amp;num;, &amp;num; i &amp;num;",3,3; </syntaxhighlight> == {{Code|p.DecodeHashKoduHtmlTekstu}} == Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;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;num}}}}. Przykłady użycia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); -- Zamienione wcześniej kody: tekstu "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;num;" w tekście; local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3); </syntaxhighlight> Wynik jest ukryty pod zmienną: <syntaxhighlight lang="lua"> local tekst2="&#35;, &#35; i &#35;"; </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|&num;}}}}. 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: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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|&num;}}}}. 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: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=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&section=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&section=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&section=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&section=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|&#35}}}}, 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&#63;action&#61;edit&#35;Obsługa&#63;"; </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&section=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_&#38;główna&#63;&#38;?action=edit&section=2&title=Nazwa strony szablonu: &#123;&#123;!&#125;&#125;#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&section=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